博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网站使用https协议
阅读量:6816 次
发布时间:2019-06-26

本文共 2549 字,大约阅读时间需要 8 分钟。

了解https

HTTPS 是以安全为目标的 HTTP 通道,即 HTTP 下加入 SSL 加密层。HTTPS 不同于 HTTP 的端口,HTTP默认端口为80,HTTPS默认端口为443。

SSL 证书是一种数字证书,它使用 Secure Socket Layer 协议在浏览器和 Web 服务器之间建立一条安全通道,从而实现:

  1. 数据信息在客户端和服务器之间的加密传输,保证双方传递信息的安全性,不可被第三方窃听;
  2. 用户可以通过服务器证书验证他所访问的网站是否真实可靠。

获取SSL证书

正式使用的话肯定是付钱由CA机构给颁发合法证书;部分CA机构也提供免费证书。

可申请的CA机构举例:

1、阿里云
2、StartSSL

具体申请步骤请自行查阅。

内部使用可以自己生成SSL证书(这个用户访问会提示证书无效或过期,存在安全隐患等等,内部人用直接信任继续访问即可使用),一般情况下用不到。

内部生成SSL证书步骤:

# 生成一个RSA密钥 $ openssl genrsa -des3 -out ssltest.key 1024 # 拷贝一个不需要输入密码的密钥文件$ openssl rsa -in ssltest.key -out ssltest_nopass.key # 生成一个证书请求$ openssl req -new -key ssltest.key -out ssltest.csr # 自己签发证书$ openssl x509 -req -days 365 -in ssltest.csr -signkey ssltest.key -out ssltest.crt

第3步是生成证书请求,会提示输入省份、城市、域名信息等,重要的是,email一定要是你的域名后缀的。这样就有一个 csr 文件了,提交给 ssl 提供商的时候就是这个 csr 文件。

当然我这里并没有向证书提供商申请,而是在第4步自己签发了证书。到这里证书就生成成功到目标目录下,名字为ssltest.crt,还有ssltest_nopass.key,名字可以根据自己需要在生成的时候进行修改。

服务器启用https

以nginx服务器示例。我们只需要在自己网站的配置文件nginx.conf中的server端增加以下配置;

listen 443 ssl;# ssl on;ssl_certificate /etc/nginx/ssltest.crt;ssl_certificate_key /etc/nginx/ssltest_nopass.key;

完整示例:

server {                                                                                                                                    listen      443 ssl;    listen       80;     server_name  52fhy.com www.52fhy.com;    index index.php index.html index.htm;    root /www/52fhy.com/;    #ssl on;     ssl_certificate_key  /usr/local/nginx/conf/52fhy.com.key;    ssl_certificate  /usr/local/nginx/conf/1_52fhy.com_bundle.crt;        if ($scheme = http) {    # rewrite ^(.*)$  https://$host$1 permanent;    }       location ~ .*\.(php|php5)?$    {           #fastcgi_pass  unix:/tmp/php-cgi.sock;        fastcgi_pass  127.0.0.1:9000;        fastcgi_index index.php;        include fastcgi.conf;    }       location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$    {           expires 30d;    }       location ~ .*\.(js|css)?$    {           expires 1h;     }           access_log  /usr/local/nginx/log/access/52fhy.com.log;}

注意:这个ssl on我本来是加上的,但是发现这样http就不能访问了,去掉后且listen 443 ssl能同时支持http和https。listen 443 ssl表示仅443端口使用ssl。

重启之后网站就可以用https访问啦,同时还支持http访问。

常见问题

网页引入的站外资源加载不了

例如页面引入了百度地图的资源,打开控制台发现使用https后加载不了,直接block了。

原因是览器默认是不允许在 https 里面引用 http 资源的。

解决办法是将http://改成相对协议//。具体使用方法为:

简而言之,就是将URL的协议(http、https)去掉,只保留//及后面的内容。这样,在使用https的网站中,浏览器会通过https请求URL,否则就通过http发送请求。

当然,如果站外链接的资源不支持https还是加载不了的。这时候可以采用其它方法,如使用 iframe,或者使用nginx方向代理将https转向http。

参考

1、图解https协议 - - 博客频道 - CSDN.NET

2、https 页面中引入 http 资源的解决方式 - 大前端 - SegmentFault

转载于:https://www.cnblogs.com/52fhy/p/6139303.html

你可能感兴趣的文章
将 TensorFlow 移植到 Android手机,实现物体识别、行人检测和图像风格迁移详细教程...
查看>>
Hyper-V 自动化支持技术
查看>>
VS2010启动调试时报“未能将脚本调试器附加到计算机”
查看>>
Python中的一些面试题(2)
查看>>
无法启动 DTC 分布式事务服务,MS DTC 发生服务特定错误: 3221229584
查看>>
基于HTTP协议的轻量级开源简单队列服务:HTTPSQS
查看>>
【精品教程】Android高手进阶教程pdf分享
查看>>
VB.NET 自动打包程序
查看>>
CISCO引擎RPR SSO
查看>>
LINUX APACHE 安装测试
查看>>
Java导致登录UCS Manager异常
查看>>
HTTP协议
查看>>
Win10怎么改Host文件?Win10编辑host文件方法(无视权限)
查看>>
sql convert and cast
查看>>
我的NodeJS一年之旅总结
查看>>
MyBatis-3.4.2-源码分析6:解析XML之objectWrapperFactoryElement & reflectorFactoryElement
查看>>
javascript与获取鼠标位置有关的属性
查看>>
Oracle database 11.2.0.3.0 升级至 11.2.0.3.14
查看>>
heartbeat理论介绍
查看>>
简单实现MVC模式
查看>>