1. 聚能聊>
  2. 话题详情

HTTP遭遇浏览器抛弃紧,新年大旺开工部署HTTPS证书要注意哪些细节?是否还可以做分数测评呢?

身处在在人海茫茫的网络之中,浏览互联网站时,信息传递并不安全。我们和网站之间的安全连接协议被视为减少用户风险的必要措施,甚至信息可能遭受窃听、中间人攻击或数据篡改。正因如此,谷歌Chrome浏览器的地址栏将把所有HTTP标示为不安全网站。谷歌对Chrome的用户界面做出了一些改变,Chrome 浏览器开始把收集密码或信用卡数据的HTTP页面标记为“不安全”。当用户使用Chrome 62,带有输入数据的HTTP页面和所有以无痕模式浏览的HTTP页面都会被标记为“不安全”。开工部署HTTPS证书要注意哪些细节?

HTTPS 运作时多了加密(encryption),认证(verification),鉴定(identification)。HTTPS 区别于 HTTP,HTTPS是HTTP的升级版本它的安,更为安全可靠协议全源自非对称加密以及第三方的 CA 认证 :
1
如上图所示,简述如下:

客户端生成一个随机数 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 机构,自己给自己的服务器颁发证书。

生成密钥、证书

第一步,为服务器端和客户端准备公钥、私钥

生成 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
在执行第二步时会出现:

服务器端需要向 CA 机构申请签名证书,在申请签名证书之前依然是创建自己的 CSR 文件

openssl req -new -key server.key -out server.csr

向自己的 CA 机构申请证书,签名过程需要 CA 的证书和私钥参与,最终颁发一个带有 CA 签名的证书

openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt

client 端

openssl req -new -key client.key -out client.csr

client 端到 CA 签名

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 ,说明证书生成的时候存在问题。也可以通过浏览器访问:
0
提示错误:

此服务器无法证明它是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";

Add perfect forward secrecy

ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
部署完成后会发现,网页 URL 地址框左边已经多出了一个小绿锁,顺利部署HTTPS证书还要注意哪些细节?新年大旺,同学们是否还可以做分数测评呢?

参与话题

奖品区域 活动规则 已 结束

  • 奖品一

    阿里云代金券 x 3

  • 奖品二

    阿里云API精选手册 x 1

  • 奖品三

    云栖帽衫 x 1

28个回答

8

韩俊强

谢邀! 近期国内证书颁发机构WoSign由于存在管理问题导致其自身声誉受损,WoSign也关闭了免费SSL签发。

对于小型企业和个人来说部署HTTPS时SSL证书就是一笔不小的费用,因此这也阻碍了HTTPS的覆盖速度。

对于Mozilla的免费证书项目Lets Encrypt虽然其证书发布数量已经破千万,但该项目有一定的技术门槛。

不过阿里云与国内某中级证书颁发机构推出了基于Symantec(赛门铁克)的免费SSL证书,有兴趣的网友可以前往阿里云进行申请。

文章地址: https://yq.aliyun.com/articles/233466?spm=a2c4e.11155435.0.0.60393312PWOUpJ

43747 回复

免费SSL证书

评论
7

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。11

6

1961905644672993 已获得阿里云代金券 复制链接去分享

新年大旺开工部署HTTPS证书要注意哪些细节?
在公共场所使用服务的时候,http是明文传输的没有加密,如果有人抓到数据包,你在一个http request里的数据都能见到。 http是HTTP协议运行在TCP之上。所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。此外客户端可以验证服务器端的身份,如果配置了客户端验证,服务器方也可以验证客户端的身份,要注意端口80,443的常用设置
是否还可以做分数测评呢?
通过函数公式:HTTPS参考分数=HTTP+加密级别+认证效率+完整性保护程度

7

好人卡小高 复制链接去分享

  1. 购买证书记得保存好相关信息。
  2. 有些网站虽然用了https但是浏览器还是标记为不安全的,那就需要检查网页源代码里面是否有http的连接。
  3. 最好设置强制http跳转到https
  4. 有cdn的时候,设置https设置不当会导致500的相关错误
43747 回复

棒棒哒棒棒哒棒棒哒

iclouder 回复

评论
7

mytsing520 复制链接去分享

谢邀。我们在使用由GlobalSign签发的Organization Validation证书。
HTTPS评分网站可见Qualys SSL Labs(https://www.ssllabs.com)或https://www.myssl.com,上述网站可对网站进行访问检测,然后你可以根据检测情况对网站进行进一步的设置。

43747 回复

嘻嘻

评论
2

1670888587991476 已获得阿里云代金券 复制链接去分享

HTTPS的不同路径可以选择HTTP/HTTPS混合
110
对于一些较大的站点来说,其不同版块可以由完全不同的团队运营。另一种选择是把你的网站的HTTPS版本放在网上,但不要在一开始就将访问请求重定向到HTTPS版本上。这意味着你的大部分流量仍然会访问网站的HTTP版本,但是你可以选择性地将你的一部分用户重定向到HTTPS版本上,以便进行测试,或者只是在电子邮件、社交媒体等版块中逐步地将HTTPS链接加入到你的网站。这样的话,即使出现了问题,也只会暴露给你的一小部分用户,你还有时间在影响变得过大之前纠正这些错误。这里有搜索引擎优化方面的考虑,我并不是这方面的专家,但是我知道你可以让自己的网站在短期内使用两个不同的URL,而规范版本仍然使用HTTP。

2

43747 已获得阿里云代金券 复制链接去分享

推荐使用扩展验证(Extended Validation(EV))证书。虽然这个证书对于你的网站安全来说并不是非常必要,但是EV证书可以在地址搜索栏上展示出明确的视觉确认效果,通过安全的SSL连接,用户可以一下子就确认是你的网站,而非假网站。
110

2

high 已获得阿里云API精选手册 复制链接去分享

支持阿里云提供免费SSL证书 ! 可自动续期,可永久免费 ,一站式自动部署 CDN 平台,实现网站HTTPS化,使网站可信防劫持防篡改支持苹果IOS ATS要求,支持安卓APP HTTPS传输要求,大吉大利

5

aoteman675 复制链接去分享

必须要收藏的文章,还有阿里云推出免费证书非常好,1024个赞。顺利部署完就是服务测试和开通上线,预祝不会被攻击吧。

43747 回复

支持干货

评论
5

浮生递归 复制链接去分享

我记得阿里云好像可以申请到免费的证书,会比自己做证书要好很多吧。至少也是ca签发机构发的,保存在浏览器里的,不会出现不安全的提示。
image

要注意的细节:

免费型 SSL: 免费型 SSL 证书是基础级 SSL 产品。

说明:目前仅Symantec提供免费型数字证书,该证书仅支持绑定一个域名。

只验证域名所有权,数小时内即可颁发。
只提供通信链路加密功能。
根证书一般使用 CA 中心认证的根证书。
仅支持绑定一个域名,且不支持通配符域名。

我觉得一般用户也只能做到这步了吧,虽然购买收费的ca证书可以提高安全性,但是更多的时候,项目要考虑成本。

5

学长_ 复制链接去分享

一、部署HTTPS证书要注意哪些细节?
由于money的问题现在主要用的Symantec的免费证书
1、网站部分资源不加载或提示不安全:所有外链资源(CSS、JS、图片、音频、字体文件、异步接口、表单 action 地址等等)都需要升级为 HTTPS
2、网站打不开:服务器证书配置(443端口、证书是否安装正常)

二、是否还可以做分数测评呢?
评测一般用 myssl 来检查。

5

沙漠的热情 复制链接去分享

部署HTTPS证书还要注意哪些细节?
HTTPS证书的订单流程如下:
补全信息 提交审核 查看进度 颁发证书 下载证书
注意:每个环节都有对应的帮助信息,请一定仔细阅读!

3

微wx笑 复制链接去分享

部署完成后会发现,网页 URL 地址框左边已经多出了一个小绿锁,顺利部署HTTPS证书还要注意哪些细节?
阿里提供的免费证书还没用过,有时间试一下;
现在有些机构颁发的已经不被信任了。

新年大旺,同学们是否还可以做分数测评呢?
SSLLabs、MySSL?

43747 回复

不错,好机构和坏机构还是可以通过对比来选择,关键是信任之前的选择需要

评论
3

游客p7x5dogniwglg 复制链接去分享

支持阿里云!支持小伙伴 !确保服务器没有支持不靠谱的重新握手和协商过程。SSL和TLS身份认证的漏洞容易遭到中间人攻击的利用,进而导致任何内容都可以重定义并注入到加密的数据流当中。大部分厂商都发布了此漏洞的补丁,若你还没有打这个补丁,最好还是先禁用这个重定义服务。明明白白才好用。

2

1282718555477883 复制链接去分享

HTTPS是以安全为目标的HTTP通道,还是在IIS下部署SSL证书实现HTTPS比较简单

1

appstore 复制链接去分享

现在大多数的手机客户端采用Http+Json的方式与服务器进行通信,也有采用TCP+ProtoBuf,通过Https + AES加密实现网络通信加密更好更安全

1

1961905644672993 复制链接去分享

顺利部署HTTPS证书还要注意哪些细节?
打个比方:如果原来的 HTTP 是塑料水管,容易被戳破;那么如今新设计的 HTTPS 就像是在原有的塑料水管之外,再包一层金属水管。一来,原有的塑料水管照样运行;二来,用金属加固了之后,不容易被戳破。
新年大旺,同学们是否还可以做分数测评呢?
可以有很多工具测试,网站平台工具和网站软件工具都可以。

1

仙人球蚂蚁 复制链接去分享

1

1828296556906529 复制链接去分享

节日快乐,SSL协议提供的服务主要有:1.认证用户和服务器,确保数据发送到正确的客户机和服务器;2.加密数据以防止数据中途被窃取;3.维护数据的完整性,确保数据在传输过程中不被改变。SSL协议已成为全球化标准,所有主要的浏览器和WEB服务器程序都支持SSL协议,可通过安装SSL证书激活SSL协议。

1

1453614734437961 复制链接去分享

https和http都属于application layer,基于TCP(以及UDP)协议,但是又完全不一样。TCP用的port是80, https用的是443(值得一提的是,google发明了一个新的协议,叫QUIC,并不基于TCP,用的port也是443, 同样是用来给https的。

2