Nginx配置SSL证书 https网站搭建
自从chrome升级之后,每次打开我自己的网站,浏览器总是有个感叹号,看起来极其碍眼,以后https毕竟是发展趋势,索性就把网站升级成https
升级前的,有个感叹号
升级后的,有个小绿锁,好看多了~~
一、申请证书
使用acme.sh申请letsencrypt证书
- 安装acme
curl https://get.acme.sh | sh
- 创建acme.sh快捷命令
alias acme.sh=~/.acme.sh/acme.sh
创建证书
- nginx 方式
acme.sh --issue -d <域名> --nginx
- -d 后面是域名
创建完成后,证书将放在
~/.acme.sh/<域名>路径下 |
创建证书保存目录
- 在任意位置创建一个文件夹,名字可以任意
mkdir /var/www/ssl/
- 将
~/.acme.sh/<域名>
下的证书拷贝到/var/www/ssl/
目录下cp -r ~/.acme.sh/<域名>/ /var/www/ssl/
二、nginx 配置
配置nginx
server { |
配置http强制跳转到https(采用301方式)
server { |
三、安装证书
安装证书
acme.sh --installcert -d <域名> --key-file /var/www/ssl/<域名>/<域名>.key --fullchain-file /var/www/ssl/<域名>/fullchain.cer --reloadcmd "service nginx force-reload" |
- -d 后面是域名
- –key-file 后面是<域名>.key 文件
- –fullchain-file 后面是cer证书路径
- –reloadcmd 为重启nginx的命令
三、常见问题
chrome 没有小绿锁
原因是,二级域名没有匹配
如:我这laoyuyu.me是匹配了,但是img.laoyuyu.me没有匹配,这样就不能出现小绿锁
Too many certificates already
证书重置请求超过次数,一般 3 次,子域名除外。就会出现 Sign failed: “detail”:”Error creating new cert :: Too many certificates already issued for exact set of domains: devhitao.com, 5 天以后才可以再次重置。Rate Limits
解决方法:
不使用rewrite ^(.*)$ https://www.laoyuyu.me$1 permanent;
方式,采用301跳转方式
无法自动更新证书
输入
acme.sh --cron -f |
同一个IP上配置多个HTTPS主机出现链接不安全问题
server { |
使用上面的配置,不论浏览器请求哪个主机,都只会收到默认主机www.quwenqing.com
的证书。这是由SSL协议本身的行为引起的——先建立SSL连接,再发送HTTP请求,所以nginx建立SSL连接时不知道所请求主机的名字,因此,它只会返回默认主机的证书。
查看是否启用了TLS:
nginx -V |
查看支持TLS协议支持版本:
nmap --script ssl-enum-ciphers -p 443 192.168.192.120 |
如果已经支持了,但是二级域名还是失败,检查listen [::]:80 ssl ipv6only=on;
80端口是否开启了ssl,如果有的话,删除这行就行了
server { |
四、个人nginx配置
server { |
参考文档
Nginx配置SSL证书 https网站搭建