LNMP安装Let’s Encrypt 免费SSL证书方法:自动安装与手动配置Nginx

SSL   2023年10月09日 12:35  

LNMP安装Let's Encrypt 免费SSL证书方法:自动安装与手动配置Nginx

前几天介绍了最新StartSSL免费SSL申请与配置,很多人看到部落介绍SSL证书安装时总是推荐了OneinStack,因为OneinStack提供了一键添加和配置Let's Encrypt 免费SSL证书的脚本,你在创建虚拟主机绑定域名就可以一步安装好SSL。

其实LNMP(即LNMP.org版LNMP脚本)更新到了1.4版本后已经增加了增加ssl选项,可以选择Let's Encrypt 或自定义证书和key文件,操作已经和OneinStack一样方便了。本文就来分享一下LNMP 1.4安装Let's Encrypt 免费SSL证书方法。

1.4支持自动申请和安装Let's Encrypt ,当然如果你自己有SSL证书,那么LNMP 1.4在创建虚拟机时直接输入Key和PEM地址,LNMP 1.4会自动帮你配置好SSL了,不懂Nginx配置的朋友有福了。而对于LNMP 1.3的朋友,也不用担心。

LNMP 1.3默认编译都已经加了SSL部分,加上Nginx配置SSL都不是很复杂,大家只需要添加几段SSL代码就可以了。更多的免费SSL证书,大家可以看看:

LNMP安装Let's Encrypt 免费SSL证书方法:自动安装与手动配置Nginx

一、LNMP自动安装Let's Encrypt 方法

1、官方网站:

  • 1、LNMP:https://lnmp.org/
  • 2、:https://letsencrypt.org/

2、LNMP 1.3安装可以参考:扔掉VPS面板!网站平滑迁移到LNMP或LAMP建站环境的方法,这里是LNMP 1.4测试版安装代码:

1
2
wget -c http://soft.vpser.net/lnmp/lnmp1.4beta.tar.gz && tar zxf lnmp1.4beta.tar.gz && cd lnmp1.4 && ./install.sh {lnmp|lnmpa|lamp}
#请注意最后的参数,需要哪个模式就写哪个,./install.sh 不带任何参数默认为LNMP模式。

3、LNMP 1.4增加PHP7.1支持,增加LNMP模式下多PHP版本选择,安装LNMP时会让你选择安装哪一个版本的PHP、哪一个版本的MysqL等。(点击放大)

LNMP安装1.4

4、执行:lnmp vhost add 添加虚拟机,添加网站的域名,设置网站的目录,伪静态,日志的名称,数据库等,注意在询问是否添加SSL证书时,选择安装Let's Encrypt 。(点击放大)

LNMP自动安装SSL选项

5、选择了自动安装Let's Encrypt 免费SSL证书时,会安装一系列的组件,部分过程可能等待的时间比较长,请耐心等待一下。这是LNMP自动安装Let's Encrypt 成功的提示。(点击放大)

LNMP安装SSL成功

二、LNMP自动安装Let's Encrypt 注意地方

1、使用LNMP自动安装Let's Encrypt ,因为涉及到要验证域名,所以请提前将你的域名解析到你的VPS主机上,这样才可以成功使用LNMP自动安装Let's Encrypt 。

2、Nginx SSL配置。LNMP自动安装Let's Encrypt 生成Nginx SSL配置文件的路径是:/usr/local/nginx/conf/vhost。

LNMP的Nginx配置文件

3、打开xxxdomain.conf,就能够看到SSL配置代码了,以后大家自己想要配置SSL的话也可以进入到这里修改了。

LNMP查看SSL代码

4、Let's Encrypt 生成的Key与PEM证书路径是:/etc/letsencrypt/live/xxxdomain,主要是两个文件:fullchain.pem和Privkey.pem。以后更新Let's Encrypt 都会在这里。

LNMP的证书路径

5、LNMP自动安装Let's Encrypt 后,原来的http依然可以访问,如果你想做301强制http跳转到https,可以使用以下代码放在xxxdomain.conf中。

1
2
3
4
5
6
7
8
server
{
        listen 80;
        server_name ucblog.net www.ucblog.net;
        rewrite ^(.*) https://www.ucblog.net$1 permanent;
}
#或者
return 301 https://www.ucblog.net$request_uri;

6、效果如下图:

LNMP实现http跳转到https

三、LNMP手动配置SSL证书方法

1、如果你想在LNMP上安装自己的SSL证书,则在创建虚拟机可以选择“Use Your own ssl Certificate and key”。然后输入你的SSL证书路径与Key完整路径。

LNMP输入证书路径

2、所以,此处最关键的就是将你SSL证书和Key上传到服务器上了。以腾讯云DV SSL证书为例,申请成功下载得到了就是crt和key两个文件,这两个文件就能上传到服务器上安装SSL了。

LNMP安装其它的SSL证书

四、Let's Encrypt 手动申请及安装在LNMP 1.4上

1、如果你想手动安装Let's Encrypt 也不是很复杂,先将你的域名解析到你的VPS主机上,然后到https://certbot.eff.org/选择适合你的VPS操作系统的安装代码:

1
2
3
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto certonly

LNMP选择安装代码

2、接下来要你选择授权目录,这时我们一般都会选择网站根目录。

LNMP选择网站目录

3、然后输入你想要申请Let's Encrypt 免费SSL证书的域名,这个域名必须是已经解析到了VPS上的。

LNMP绑定域名

4、然后会要你输入网站根目录。

LNMP要求输入目录

5、找到我们已经用LNMP创建好的虚拟机网站根目录。

LNMP找到本地创建的网站

6、耐心等待,Let's Encrypt 申请成功了。

LNMP申请Let's Encrypt 成功了

7、我们可以进入到/etc/letsencrypt/live/看到自己刚刚申请到的CRT和Key。

Let's Encrypt 已经生成的文件

8、找到我们用LNMP创建虚拟机生成的Nginx配置文件。

Let's Encrypt 创建的配置文件

9、如果你在用LNMP创建网站时选择是添加SSL,这时你的Nginx配置中已经有SSL代码了,这时你只需要替换好SSL路径即可。要求是完整路径,示例如下:

1
2
/etc/letsencrypt/live/web.ucblog.net/fullchain.pem
/etc/letsencrypt/live/web.ucblog.net/privkey.pem

Let's Encrypt 替换路径

10、重启LNMP,打开域名,查看SSL证书已经安装成功了。

Let's Encrypt 安装成功

五、LNMP 1.3安装配置Let's Encrypt SSL

1、先按照上面的方法,手动申请好Let's Encrypt SSL证书,打开你的域名Nginx配置文件,将SSL代码复制粘贴到下方即可。

Let's Encrypt 粘贴代码

2、Nginx SSL配置代码该如何修改?这里给出一份没有添加SSL的Nginx 配置文件代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
server
    {
        listen 80;
        #listen [::]:80;
        server_name we.ucblog.net ;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/wwwroot/we.ucblog.net;
 
        include wordpress.conf;
        #error_page   404   /404.html;
 
        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
 
        include enable-php.conf;
 
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }
 
        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }
 
        location ~ /.well-known {
            allow all;
        }
 
        location ~ /\.
        {
            deny all;
        }
 
        access_log  /home/wwwlogs/we.ucblog.net.log;
    }

3、这里是已经添加了Nginx SSL配置代码示例,通过对比你只需要将含有SSL代码的Nginx代码复制到里面即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
server
    {
        listen 80;
        #listen [::]:80;
        server_name web.ucblog.net ;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/wwwroot/web.ucblog.net;
 
        include wordpress.conf;
        #error_page   404   /404.html;
 
        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
 
        include enable-php.conf;
 
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }
 
        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }
 
        location ~ /.well-known {
            allow all;
        }
 
        location ~ /\.
        {
            deny all;
        }
 
        access_log  /home/wwwlogs/web.ucblog.net.log;
    }
 
server
    {
        listen 443 ssl http2;
        #listen [::]:443 ssl http2;
        server_name web.ucblog.net ;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/wwwroot/web.ucblog.net;
        ssl on;
        ssl_certificate /etc/letsencrypt/live/web.ucblog.net/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/web.ucblog.net/privkey.pem;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
        ssl_session_cache builtin:1000 shared:SSL:10m;
        # openssl dhparam -out /usr/local/nginx/ssl/dhparam.pem 2048
        ssl_dhparam /usr/local/nginx/ssl/dhparam.pem;
 
        include wordpress.conf;
        #error_page   404   /404.html;
 
        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
 
        include enable-php.conf;
 
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }
 
        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }
 
        location ~ /.well-known {
            allow all;
        }
 
        location ~ /\.
        {
            deny all;
        }
 
        access_log  /home/wwwlogs/web.ucblog.net.log;
    }

4、大家在复制代码时记得将示例中的web.ucblog.net演示网址替换成自己的。

六、LNMP安装Let's Encrypt小结

1、Let's Encrypt有效期只有三个月,所以最好是设置一个定时任务:crontab –e,然后将以下代码复制到里面,表示每隔7天就自动更新一下Let's Encrypt:

1
0 3 */7 * * /bin/certbot renew --renew-hook "/etc/init.d/nginx reload"

Let's Encrypt 自动更新

2、LNMP提供的LAMP也有SSL配置示例,如果你采用的是Apache架构,也可以参考LNMP提示的SSL配置示例进行手动配置。

文章出自:免费资源部落 / 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。

域名注册
购买VPS主机

您或许对下面这些文章有兴趣:                    本月吐槽辛苦排行榜

在这个部落村庄里,已经有47 位神马家族成员冒出泡来在农场开始干活了
  • jei8

    深夜来抢沙发。 :razz:

    烟花易冷 回复:

    @jei8, 沙发好

    这是农场的第 1 块农田,部落批准 [jei8] 在[2017-1-16 00:35]开垦完成.
  • EQ 4

    :mrgreen: 前排

    这是农场的第 2 块农田,部落批准 [EQ] 在[2017-1-16 05:37]开垦完成.
  • 最后更新这段代码。在全部都安装成功后,直接用S%输入就行么

    qi 回复:

    @薅羊毛, 是的,不过LNMP 1.4已经自动设置了定时更新的任务了,手动配置的话可以自己编辑定时任务。

    薅羊毛 回复:

    @qi, 手动设置的话就不用,更新最后那段代码了么?直接等系统默认么

    qi 回复:

    @薅羊毛, 用的是LNMP 1.4吗?输入命令:crontab -l可以查看,应该会有这么一段代码,脚本安装时会添加进去。没有的话就需要编辑crontab -e。最后一段代码适合LNMP 1.4,其它的脚本要注意。

    这是农场的第 3 块农田,部落批准 [薅羊毛] 在[2017-1-16 07:13]开垦完成.
  • Kung 23

    学习学习。

    这是农场的第 4 块农田,部落批准 [Kung] 在[2017-1-16 09:04]开垦完成.
  • 大毛

    做一次沙发!

    这是农场的第 5 块农田,部落批准 [大毛] 在[2017-1-16 09:12]开垦完成.
  • 全自动化真方便~~~

    这是农场的第 6 块农田,部落批准 [可可豆] 在[2017-1-16 10:24]开垦完成.
  • yyeui

    其实Apache配置那一部分是最麻烦的,网上相关教程都不行。

    神爱 回复:

    @yyeui, Apache配置貌似比Nginx简单吧

    这是农场的第 7 块农田,部落批准 [yyeui] 在[2017-1-16 18:18]开垦完成.
  • RR233CY 18

    好方便,LNMP

    这是农场的第 8 块农田,部落批准 [RR233CY] 在[2017-1-16 18:49]开垦完成.
  • oneinstack可以直接配置傻瓜式的吧

    qi 回复:

    @烟花易冷, 是的,脚本更新很快,功能也不错。我主要看它有了PHP 7.LNMP正式版本估计到2017年6月才发布吧,太慢了。

    这是农场的第 9 块农田,部落批准 [烟花易冷] 在[2017-1-16 20:55]开垦完成.
  • 博主很厉害,从2013年就关注博主站点,学到很多东西

    qi 回复:

    @蜗牛789, 谢谢支持,我也是一直在学习中。

    qi 回复:

    @蜗牛789, 博主你的网站提交评论有问题,一直显示正在提交中。

    蜗牛789 回复:

    @qi, 是不是开启审核评论的问题?该如何解决,求支招!

    qi 回复:

    @蜗牛789, 用Chrome工具审查元素可以看到你的主题有好多的错误。另外,发现刚刚发表的评论在你的博客是待审核。

    这是农场的第 10 块农田,部落批准 [蜗牛789] 在[2017-1-17 09:34]开垦完成.
  • 豆采 3

    lnmp,最近的宝塔也不做 :mrgreen:

    qi 回复:

    @豆采, 不会吧,放弃了?Windows平台其实用户更少。

    这是农场的第 11 块农田,部落批准 [豆采] 在[2017-1-17 10:32]开垦完成.
  • 蛋疼实验室路过。

    这是农场的第 12 块农田,部落批准 [不认识] 在[2017-1-17 10:57]开垦完成.
  • 过年啦

    2017年看来是流行SSL了。想当年SSL还是高大上的东西。 :grin:

    EQ 回复:

    @过年啦, :mrgreen: 去年就开始流行了。。国内各大云主机都上了免费的证书

    这是农场的第 13 块农田,部落批准 [过年啦] 在[2017-1-17 11:48]开垦完成.
  • 我用oneinstack安装环境老是出现中途下载失败,然后就一直重试、、、好几台vps都这样,不知道为什么,后来学人家手动搭建,倒是搭建好了。
    想咨询一下,我vps装了几个网站,有一个owncloud使用了ssl,然后我的主博客再想安装ssl就失败了,是都用的同一家的ssl还是什么原因呢?

    qi 回复:

    @affiliate英文网赚, 如果是中途失败的话,可能与你的Linux操作系统有关系,换一个系统就好了。理论上讲SSL与多少个网站没有关系,只要在VPS上配置好网站访问路径即可。没有安装SSL前,几个网站都访问正常吗?

    affiliate英文网赚 回复:

    @qi, 我的失败有可能是因为我的owncloud用的就是我主博客的子域名。
    测试的话,own那个网站一搭建好我就ssl了,所以没注意,现阶段是主博客没有安装ssl,所有网站正常访问。

    qi 回复:

    @affiliate英文网赚, 哦,主站的conf配置好443应该没有问题的。

    这是农场的第 14 块农田,部落批准 [affiliate英文网赚] 在[2017-1-17 21:27]开垦完成.
  • ue

    百度虽然上了SSL,但是百度好多的其它的产品其实压根也没上SSL,不知道百度对于这样的行为是怎么一个意思。

    这是农场的第 15 块农田,部落批准 [ue] 在[2017-1-17 21:44]开垦完成.
  • hh

    这个SSL好。

    这是农场的第 16 块农田,部落批准 [hh] 在[2017-1-18 12:07]开垦完成.
  • 厘米 3

    进入2017我也给博客上了ssl,不过随之而来的就是网站成本的上升,国内七牛又拍等https都是收费项目。

    qi 回复:

    @厘米, 是呀,太贵了,用不起。又拍云的貌似要更贵一些,还有什么Https请求费。

    这是农场的第 17 块农田,部落批准 [厘米] 在[2017-1-18 13:53]开垦完成.
  • 看了博主的介绍,给自己的小站也用上了ssl
    https://www.uufox.net

    boke 回复:

    @uufox.net, 你这是英文网站?

    这是农场的第 18 块农田,部落批准 [uufox.net] 在[2017-1-19 12:39]开垦完成.
  • 请问lnmpa 1.3如何解决?

    qi 回复:

    @叶子, 这个需要自己手动修改Nginx配置文件,不过你可以先升级LNMP 1.4,这样以后都方便了。

    这是农场的第 19 块农田,部落批准 [叶子] 在[2017-2-5 06:36]开垦完成.
  • 禅猫 4

    Let’s支持ecc证书申请

    qi 回复:

    @禅猫, 这个怎么申请?

    禅猫 回复:

    @qi, 在配置的过程中有可以选择的
    新闻https://letsencrypt.org/upcoming-features/
    脚本 https://github.com/diafygi/acme-tiny

    qi 回复:

    @禅猫, 哦,这个不错。

    这是农场的第 20 块农田,部落批准 [禅猫] 在[2017-2-17 23:12]开垦完成.
  • 十三

    你好 选择自动安装证书时提示:

    An unexpected error occurred:
    There were too many requests of a given type :: Error creating new cert :: too many certificates already issued for exact set of domains: meijudog.com,www.meijudog.com
    Please see the logfiles in /var/log/letsencrypt for more details.
    Let’s Encrypt SSL Certificate create failed!

    用的是lnmp1.4

    这种情况如何修复呢?

    qi 回复:

    之前是不是申请过这个证书?打开错误日志看看详细的错误。

    十三 回复:

    @qi, 是因为刚开始捣鼓的时候时lnmp1.3版本 折腾几次没成功 证书反复申请了好几次导致的 但不知道怎么才能重新申请

    十三 回复:

    @qi, 手动安装成功了 但自动续期暂时弄不了 等过阵子再试试了 谢谢博主的教程 ^_^

    qi 回复:

    @十三, 定时任务有时会失败,我这里也是这样。貌似是因为占用了端口。

    这是农场的第 21 块农田,部落批准 [十三] 在[2017-4-22 01:49]开垦完成.
  • neo

    前辈大神,
    我是在linode 的5美元vps上建的wordpress站。
    按照LNMP自动安装Let’s Encrypt的方法部署完毕后,
    输入网站域名后出现了404 Not Found nginx,该如何是好啊?

    这是农场的第 22 块农田,部落批准 [neo] 在[2017-7-3 14:07]开垦完成.
看贴要回贴有N种理由!看帖不回贴的后果你懂得的!


评论内容 (*必填):
(Ctrl + Enter提交)   

部落快速搜索栏

各类专题梳理

网站导航栏

X
返回顶部