环境:CentOS 6,LNMP v1.3
假定网站的域名叫mydomain.net
安装 acme.sh
curl https://get.acme.sh | sh
然后重新载入一下 .bashrc
source ~/.bashrc
生成证书
acme.sh --issue -d mydomain.net -d www.mydomain.net --webroot /home/wwwroot/mydomain.net/
注意,上面这个命令将会在 /home/wwwroot/mydomain.net 创建一个 .well-known 的文件夹,同时 Let’ s Encrypt 将会通过你要注册的域名去访问该文件夹下的文件来确定权限,即会访问 http://www.mydomain.net/.well-known/ 这个路径,所以你需要修改 Nginx 配置来确保按http://www.mydomain.net/.well-known/访问时能访问 /home/wwwroot/mydomain.net/.well-known 下的文件。
以下的配置参考自https://github.com/letsencrypt/acme-spec/issues/221。另外可参考https://www.5dzone.com/25.html
location ^~ /.well-known {
allow all;
auth_basic off;
alias /home/wwwroot/mydomain.net/.well-known/;
}
安装证书
acme.sh --installcert -d mydomain.net --keypath /usr/local/nginx/ssl/mydomain.key --fullchainpath /usr/local/nginx/ssl/mydomain.cer --reloadcmd "/etc/init.d/nginx restart"
注意:/usr/local/nginx/ssl 这个目录要提前建好。
/etc/init.d/nginx restart 是LNMP v1.3中的Nginx重启命令
生成dhparam.pem文件,这个在一些vps上耗时要几分钟
openssl dhparam -out /usr/local/nginx/ssl/dhparam.pem 2048
Nginx配置
server {
listen 80;
server_name www.mydomain.net mydomain.net;
rewrite ^ https://$server_name$request_uri? permanent;
}
server {
listen 443 ssl;
ssl_certificate /usr/local/nginx/ssl/mydomain.cer;
ssl_certificate_key /usr/local/nginx/ssl/mydomain.key;
ssl_dhparam /usr/local/nginx/ssl/dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
server_name www.mydomain.net mydomain.net;
...
}
自动升级acme.sh
acme.sh --upgrade --auto-upgrade
通过https://www.ssllabs.com/ssltest/analyze.html?d=mydomain.net能看到ssllabs对该网站的ssl评级。
如果不配置 ssl_dhparam,Key Exchange显示为黄色,则评级是B,配置ssl_dhparam后评级为A