前提:nginx已启动
主机环境:ubuntu 16.04
使用的ssl证书为Lets's Encrypt Authority x3签发的,是免费使用的,他们的工具现在叫certbot,使用方法很简单,按这一套流程下来,https就就可以正常使用了,非常方便。
主要记录一下几个要点
多个子域需要各自生成证书,比如example.com、a.example.com、b.example.com就需要三个证书,终端用这一条命令搞定:
sudo certbot --expand -d example.com,a.example.com,b.example.com
接下来会让你选这个:
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
假如你有很多子域,或设置了泛解析,并且没有分别为每个子域分配证书
- 如果选择了1,nginx不会对非https请求作重定向。添加了证书的子域,如果用户输入http进入还是按照http做请求,未添加证书的子域也还是按照http来链接(80端口),对用户的体验没有影响。
- 如果选择了2,会在nginx配置文件中加入一个http => hhtps的强制重定向操作。那么在访问没有证书的子域时,会出现这个界面(你的连接不安全,需要在高级中点继续访问),不过这个子域在连接时仍然使用的443端口,这在你将某一没有证书的子域作为restfulAPI服务时对一些强制需要https的网站很有用,比如小程序,比如苹果。
其实2比1在nginx中就多了这么几行,注释掉和1的作用相同
在nginx这里,最好将每一子域分开写,我写的*.example.com
,在更新证书时提示没有找到www.
这个子域,但是感觉这样不合理,应该是可以批量配置的。