lnmp本身支持自签证书,这里只说使用用acme.sh脚本单独签发证书。

lnmp环境由于修改了原生nginx的一些规则,需要稍作修改。本文只记录我自己签发证书过程。

安装acme.sh

curl https://get.acme.sh | sh

生成证书

lnmp 环境下做了部分配置变更,不建议直接使用--nginx方式验证和生成。


acme.sh --issue -d www.evenvi.com --webroot /home/wwwroot/www.evenvi.com/public/

证书安装

前面证书生成以后, 接下来需要把证书 copy 到真正需要用它的地方.
注意, 默认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的文件, 例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件. 这里面的文件都是内部使用, 而且目录结构可能会变化.
正确的使用方法是使用 --installcert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置, 例如:

acme.sh --installcert -d www.evenvi.com --key-file /home/wwwroot/www.evenvi.com/cert/key.pem --fullchain-file /home/wwwroot/www.evenvi.com/cert/cert.pem --reloadcmd "/etc/init.d/nginx reload"

配置证书生效

在 /usr/local/nginx/vhost/www.evenvi.com.conf 中修改为如下配置。


listen 443 ssl;

ssl_certificate /home/wwwroot/www.evenvi.com/cert/cert.pem;
ssl_certificate_key /home/wwwroot/www.evenvi.com/cert/key.pem;

增加80跳转到443

在配置文件后面直接添加如下配置即可

server {
listen 80;
server_name www.evenvi.com;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}

这样访问80就自动转到433接口。

Tags: lnmp, let‘s encrypt, acme.sh

Related Posts:

Leave a Comment