HTTPS是站点部署的发展趋势,由于HTTP的一系列安全问题。例如网络嗅探时数据报文默认是明文传输,容易遭受MitM攻击篡改数据等等…
在内网环境部署站点的时候,HTTPS协议传输已经成了必要的环节,在准测试环境部署时,往往采用自签证书。
在Windows上会提示,您的连接不是私密连接。在高级选项中可以继续前往该站点,Chrome默认用户接受了该风险,即证书过期或使用的自签证书。
在macOS上就比较离谱了,默认是没有继续前往该站点的。
Google官方给出如下建议来使用macOS访问该站点:
- 使用公开信任的证书保护服务器。如果可以从 Internet 访问服务器,则一些公共 CA 会提供免费的、自动更新的服务器证书。
- http://localhost被视为安全来源,因此如果您能够从 localhost 运行您的服务器,您应该能够在该服务器上测试该功能。
- 您可以使用 chrome://flags/#unsafely-treat-insecure-origin-as-secure 来运行 Chrome,或者使用 –unsafely-treat-insecure-origin-as-secure=” http://example.com ” 标志(将 “example.com” 替换为您实际要测试的来源),它将将该来源视为对于此会话是安全的。请注意,在 Android 和 ChromeOS 上,命令行标志需要具有 root 访问/开发模式的设备。
-
为临时测试创建一个自签名证书。直接使用此类证书需要单击无效的证书插页式广告,否则不建议这样做。请注意,由于这种插页式点击(这也阻止了 HTTPS 响应缓存),我们推荐选项 (1) 和 (2),但它们很难在移动设备上执行。有关如何执行此操作的更多信息,请参阅这篇关于为服务器设置自签名证书的帖子。
5.另一种方法是生成一个自签名根证书,将其放入开发人员 PC/设备的信任库中,然后为测试服务器颁发一个或多个证书。信任根证书意味着 Chrome 会将站点视为安全站点并加载它,而不会出现插页式广告或影响缓存。设置和使用自定义根证书的一种简单方法是使用开源 mkcert 工具。
如何使用OpenSSL生成自签证书?
# 生成CA私钥,秘钥长度2048,小于2048认为存在安全问题
openssl genrsa -out server.key 2048
# 生成CSR
openssl req -new -key server.key -out server.csr
# 验证CSR完整性
openssl req -text -in server.csr -noout -verify
# 使用x.509标准生成自签CA,有效期是365天
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
如何在Nginx上配置自签证书?
- 修改Nginx目录下的主配置文件nginx.conf
# 文件路径一般为 /etc/nginx.conf
server {
#SSL 访问端口号为 443
listen 443 ssl;
#填写绑定证书的域名
server_name xxx.com;
#证书文件名称
ssl_certificate xxx.crt;
#私钥文件名
ssl_certificate_key xxx.key;
ssl_session_timeout 5m;
location / {
root D:/webdir/;
index index.html;
}
}
- 测试Nginx配置文件并重启服务
/usr/sbin/nginx -t && /usr/sbin/nginx -s reload
- 如果报错invalid PID number,先设置nginx配置文件路径
#这里替换成你的Nginx.conf的实际路径,并去掉单引号
/usr/sbin/nginx -c '/etc/nginx.conf'
- 再重加载配置文件
/usr/sbin/nginx -s reload
如果不缺米的话,可以直接找CA去购买证书,同时在访问的时候会出现小绿标。
版权声明:本文为liuyuxin36原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。