身处在在人海茫茫的网络之中,浏览互联网站时,信息传递并不安全。我们和网站之间的安全连接协议被视为减少用户风险的必要措施,甚至信息可能遭受窃听、中间人攻击或数据篡改。正因如此,谷歌Chrome浏览器的地址栏将把所有HTTP标示为不安全网站。谷歌对Chrome的用户界面做出了一些改变,Chrome 浏览器开始把收集密码或信用卡数据的HTTP页面标记为“不安全”。当用户使用Chrome 62,带有输入数据的HTTP页面和所有以无痕模式浏览的HTTP页面都会被标记为“不安全”。开工部署HTTPS证书要注意哪些细节?
HTTPS 运作时多了加密(encryption),认证(verification),鉴定(identification)。HTTPS 区别于 HTTP,HTTPS是HTTP的升级版本它的安,更为安全可靠协议全源自非对称加密以及第三方的 CA 认证 :
如上图所示,简述如下:
客户端生成一个随机数 random-client ,传到服务器端(Say Hello)
服务器端生成一个随机数 random-server ,和着公钥,一起回馈给客户端(I got it)
客户端收到的东西原封不动,加上 premaster secret (通过 random-client 、 random-server 经过一定算法生成的东西),再一次送给服务器端,这次传过去的东西会使用公钥加密
服务器端先使用私钥解密,拿到 premaster secret ,此时客户端和服务器端都拥有了三个要素: random-client 、 random-server 和 premaster secret
此时安全通道已经建立,以后的交流都会校检上面的三个要素通过算法算出的 session key
CA 数字证书认证中心
如果网站只靠上图运作,可能会被中间人攻击,试想一下,在客户端和服务端中间有一个中间人,两者之间的传输对中间人来说是透明的,那么中间人完全可以获取两端之间的任何数据,然后将数据原封不动的转发给两端,由于中间人也拿到了三要素和公钥,它照样可以解密传输内容,并且还可以篡改内容。
为了确保我们的数据安全,我们还需要一个 CA 数字证书。HTTPS的传输采用的是非对称加密,一组非对称加密密钥包含公钥和私钥,通过公钥加密的内容只有私钥能够解密。上面我们看到,整个传输过程,服务器端是没有透露私钥的。而 CA 数字认证涉及到私钥,整个过程比较复杂,我也没有很深入的了解,后续有详细了解之后再补充下。
CA 认证分为三类:DV ( domain validation),OV ( organization validation),EV ( extended validation),证书申请难度从前往后递增,貌似 EV 这种不仅仅是有钱就可以申请的。
对于一般的小型网站尤其是博客,可以使用自签名证书来构建安全网络,所谓自签名证书,就是自己扮演 CA 机构,自己给自己的服务器颁发证书。
生成密钥、证书
第一步,为服务器端和客户端准备公钥、私钥
openssl genrsa -out ca.key 1024# X.509 Certificate Signing Request (CSR) Management.openssl req -new -key ca.key -out ca.csr# X.509 Certificate Data Management.openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt
在执行第二步时会出现:
openssl req -new -key server.key -out server.csr
openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt
openssl req -new -key client.key -out client.csr
openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in client.csr -out client.crt
此时,我们的 keys 文件夹下已经有如下内容了:
// file http-server.js
var https = require('https');
var fs = require('fs');
var options = {
key: fs.readFileSync('./keys/server.key'),
cert: fs.readFileSync('./keys/server.crt')
};
https.createServer(options, function(req, res) {
res.writeHead(200);
res.end('hello world');
}).listen(8000);
短短几行代码就构建了一个简单的 https 服务器,options 将私钥和证书带上。然后利用 curl 测试:
?7?4 https curl -k https://localhost:8000
hello world%
这样的方式是不安全的,存在我们上面提到的中间人攻击问题。可以搞一个客户端带上 CA 证书试试:
?7?4 https node https-client.js
hello world
如果你的代码没有输出 hello world ,说明证书生成的时候存在问题。也可以通过浏览器访问:
提示错误:
此服务器无法证明它是localhost;您计算机的操作系统不信任其安全证书。出现此问题的原因可能是配置有误或您的连接被拦截了。
原因是浏览器没有 CA 证书,只有 CA 证书,服务器才能够确定,这个用户就是真实的来自 localhost 的访问请求(比如不是代理过来的)。
你可以点击 继续前往localhost(不安全) 这个链接,相当于执行 curl -k https://localhost:8000 。如果我们的证书不是自己颁发,而是去靠谱的机构去申请的,那就不会出现这样的问题,因为靠谱机构的证书会放到浏览器中,浏览器会帮我们做很多事情。初次尝试的同学可以去阿里云申请一个免费的证书。
Nginx 部署
ssh 到你的服务器,对 Nginx 做如下配置:
server_names nginx.com *.nginx.com
ssl on;
ssl_certificate /etc/nginx/ssl/nginx.com.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !MEDIUM";
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
部署完成后会发现,网页 URL 地址框左边已经多出了一个小绿锁,顺利部署HTTPS证书还要注意哪些细节?新年大旺,同学们是否还可以做分数测评呢?
阿里云代金券 x 3
阿里云API精选手册 x 1
云栖帽衫 x 1
1694722319161085
已获得云栖帽衫
复制链接去分享
阿里加油!想要支持HTTPS加密通信,必须要申请并安装服务器SSL证书,服务器SSL证书可以从证书颁发机构(CA机构)申请。配置HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议。它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的完全套接字层=(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。https是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,https的安全基础是SSL,因此加密的详细内容请看SSL。
1961905644672993
已获得阿里云代金券
复制链接去分享
新年大旺开工部署HTTPS证书要注意哪些细节?
在公共场所使用服务的时候,http是明文传输的没有加密,如果有人抓到数据包,你在一个http request里的数据都能见到。 http是HTTP协议运行在TCP之上。所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。此外客户端可以验证服务器端的身份,如果配置了客户端验证,服务器方也可以验证客户端的身份,要注意端口80,443的常用设置
是否还可以做分数测评呢?
通过函数公式:HTTPS参考分数=HTTP+加密级别+认证效率+完整性保护程度
谢邀! 近期国内证书颁发机构WoSign由于存在管理问题导致其自身声誉受损,WoSign也关闭了免费SSL签发。
对于小型企业和个人来说部署HTTPS时SSL证书就是一笔不小的费用,因此这也阻碍了HTTPS的覆盖速度。
对于Mozilla的免费证书项目Lets Encrypt虽然其证书发布数量已经破千万,但该项目有一定的技术门槛。
不过阿里云与国内某中级证书颁发机构推出了基于Symantec(赛门铁克)的免费SSL证书,有兴趣的网友可以前往阿里云进行申请。
文章地址: https://yq.aliyun.com/articles/233466?spm=a2c4e.11155435.0.0.60393312PWOUpJ
谢邀。我们在使用由GlobalSign签发的Organization Validation证书。
HTTPS评分网站可见Qualys SSL Labs(https://www.ssllabs.com)或https://www.myssl.com,上述网站可对网站进行访问检测,然后你可以根据检测情况对网站进行进一步的设置。
1670888587991476
已获得阿里云代金券
复制链接去分享
HTTPS的不同路径可以选择HTTP/HTTPS混合
对于一些较大的站点来说,其不同版块可以由完全不同的团队运营。另一种选择是把你的网站的HTTPS版本放在网上,但不要在一开始就将访问请求重定向到HTTPS版本上。这意味着你的大部分流量仍然会访问网站的HTTP版本,但是你可以选择性地将你的一部分用户重定向到HTTPS版本上,以便进行测试,或者只是在电子邮件、社交媒体等版块中逐步地将HTTPS链接加入到你的网站。这样的话,即使出现了问题,也只会暴露给你的一小部分用户,你还有时间在影响变得过大之前纠正这些错误。这里有搜索引擎优化方面的考虑,我并不是这方面的专家,但是我知道你可以让自己的网站在短期内使用两个不同的URL,而规范版本仍然使用HTTP。
43747
已获得阿里云代金券
复制链接去分享
推荐使用扩展验证(Extended Validation(EV))证书。虽然这个证书对于你的网站安全来说并不是非常必要,但是EV证书可以在地址搜索栏上展示出明确的视觉确认效果,通过安全的SSL连接,用户可以一下子就确认是你的网站,而非假网站。
high
已获得阿里云API精选手册
复制链接去分享
支持阿里云提供免费SSL证书 ! 可自动续期,可永久免费 ,一站式自动部署 CDN 平台,实现网站HTTPS化,使网站可信防劫持防篡改支持苹果IOS ATS要求,支持安卓APP HTTPS传输要求,大吉大利