Nginx部署ssl证书开启https简要教程


ssl证书分收费的,和免费的,当然这里会给普通用户介绍免费就可以用的。

关于什么是SSL证书,什么是https的基础问题,这里不作赘述,需要补课的同学可以自行搜索学习。本篇直接给出简便快捷实现目标的工具,那就是今天的主角,acme.sh。它完成了帮你自动申请Let's Encrypt证书的全部过程,所以这里你又可以忽略它到底怎么申请到,并使用的整个过程,只需要知道怎么用它就好了。

详细官方使用说明见

github:Neilpang/acme.sh/wiki/How-to-issue-a-cert

其它也有中文文档可参考

我这里示例过程,使用的dnspod部署dns的域名,所以申请了dnspod接口,可以让acme.sh直接自己验证域名有效性,完成自动申请证书的过程。

DNSPOD API在其后台可以设置,文中没办法帖外链地址,请自行查找。

申请到API的ID和TOKEN之后

# export DP_Id="ID123456"

# export DP_Key="token串"

# acme.sh --issue --dns dns_dp -d example.com

example.com是示例域名,请替换成你自己的。运行完上面的命令之后就会告诉你,证书文件存放在
/root/.acme.sh/example.com/目录下了。

生成4096位的DH-Key(证书密钥交换密钥)

# screen -S DH

# openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 4096

在Nginx的Server段加入ssl相关配置

ssl_certificate /usr/local/nginx/conf/ssl/example.com.cer;

ssl_certificate_key /usr/local/nginx/conf/ssl/example.com.key;


#OCSP Stapling的证书位置

ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;

#DH-Key交换密钥文件位置

#SSL优化配置

ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

#只允许TLS协议

ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

#加密套件,这里用了CloudFlare's Internet facing SSL cipher configuration

ssl_prefer_server_ciphers on;

#由服务器协商最佳的加密算法

ssl_session_cache builtin:1000 shared:SSL:10m;

#Session Cache,将Session缓存到服务器,这可能会占用更多的服务器资源

ssl_session_tickets on;

#开启浏览器的Session Ticket缓存

ssl_session_timeout 10m;

#SSL session过期时间

证书安装并重启nginx

# acme.sh --installcert -d example.com --key-file /usr/local/nginx/conf/ssl/example.com.key --fullchain-file /usr/local/nginx/conf/ssl/example.com.cer --reloadcmd "service nginx reload"

配置acme.sh自动运行,因为免费证书的有效期是90天,这样就不用想着自己再去生成新证书了。

# crontab -e

42 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

最后特别注意,经过实践发现,新配置的域名和相关证书,第一次需要重启nginx,配置才会生效,配置过https的域名,以后nginx reload才有效。这里是个坑,需要注意一下。

OK,就到这里吧,你在使用过程中遇到什么问题,可以在下面回复交流。

相关文章

nginx 代理转发 http https 基本用法

nginx 配置http最简单的用法;server{ # 监听的端口 listen 80; # 绑定的域名,多个用空格分开即可。 server_name prvt.c...

nginx 服务器配置https时如何重定向http

为了网络访问的安全性,https被更多的网站所使用,现在开发App,微信小程序都固定为使用https的访问,让访问更安全,但同时也得处理http请求,使它重定向,方便官网的访问。nginx 服务器配置...

nginx配置https详解

要在Nginx上配置HTTPS,需要进行以下步骤:获取证书和密钥文件 在使用HTTPS之前,需要先获取SSL证书和密钥文件。可以通过购买证书或者使用自签名证书来获取,证书和密钥文件可以通过各种方式获取...

Nginx: 最常见的 2 种 http to https 跳转场景

Nginx: 最常见的 2 种 http to https 跳转场景建议点击 查看原文 查看最新内容。原文链接: https://typonotes.com/posts/2023/08/28/ngin...

手把手教学|Nginx 如何配置 HTTPS 服务器

配置 HTTPS 服务器要配置 HTTPS 服务器,必须在 server 块的侦听套接字上启用 ssl 参数,并指定服务器证书和私钥文件的位置:server { listen...

应用层协议HTTP和HTTPS,一篇文章学会

HTTPHTTP 协议详解HTTP(Hypertext Transfer Protocol,超文本传输协议)是用于分布式、协作式和超媒体信息系统的应用层协议。它最早用于万维网(WWW),是浏览器和服务...