基于Nginx的网站安装免费Let’s Encrypt SSL证书方法二

NGINX ssl证书

之前发过安装免费Let’s Encrypt SSL证书的方法一,今天介绍一下第二中方法,这个更容易一点,大致步骤差不多,也就获取证书这一步有些区别。

1. 购买VPS或云主机

国内外都有不少优秀的主机商,按照自己的业务需求购买主机吧,怎么购买我就不说了,这里推荐几个大公司的vps和云主机。

国外的VPS或云服务器就多了:

  • Linode
  • Vultr
  • DigitalOcean – 这个前几年被国人薅羊毛薅得太严重,现在注册都很难,2020年我注册时需要人脸验证身份,估计国人也没多少人用了,因为在国内也很慢
  • Banwagonhost – 国内称搬瓦工,因为提供CN2 GIA线路在国内访问非常快,被国人群起而购之,现在价格是与日俱增,至于速度现在如何不知道。

国内的云服务器:

接下来就是用的腾讯香港轻量服务器为例子,系统是centos7(2024年之后不再获得官方安全更新和支持)。你也可以用其他发行版例如Ubantu等等,步骤类似。因为购买腾讯云的话可以用Tencent OS,这个是兼容centos,他们会一直支持安全更新和支持的,即使centos停止更新。

2. 安装nginx

首先建议安装epel-release源,之后很多软件安装都会用得到,下文中是非root用户可能需要在命令前添加sudo。

yum update
yum -y install epel-release

安装yum的相关程序包:

yum install yum-utils

设置用于nginx的yum存储库,首先创建一个/etc/yum.repos.d/nginx.repo文件,可直接用vim

mkdir /etc/yum.repos.d  //假如yum.repos.d不存在的话
vim /etc/yum.repos.d/nginx.repo

通过vim开启一个新的nginx.repo文件(或者你也可以用FTP软件直接添加文件),按i在文件中输入以下内容,这是nginx的稳定版,你也可以安装他们的主线版,但推荐稳定版,具体看nginx: Linux packages。

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

之后按Esc键,接着输入“:wq”保存文件。现在可以输入命令安装nginx了

yum install nginx

nginx安装好后开启nginx服务

systemctl start nginx
systemctl enable nginx
centos+nginx给网站安装免费SSL证书

你还可以用systemctl status nginx查看nginx是否启用。假如你的域名已经绑定好了主机IP(也就是域名解析),你现在可以打开网站看看是不是有nginx的欢迎页如上图,当然输入IP也能看到以上欢迎页。

3. 安装certbot以及获取免费Let’s encrypt ssl证书

安装certbot,这个软件是获取证书必须的

yum install certbot

接下来建议给nginx创建共用的配置文件,以避免重复代码,这些在之后nginx的配置文件中用得到。

Diffie-Hellman 密钥交换 (DH) 是一种在不安全的通信通道上进行安全交换加密密钥的方法。当服务器SSL/TLS的瞬时Diffie-Hellman公共密钥小于等于1024位时,存在可以恢复纯文本信息的风险,所以我们首先,通过键入以下命令生成一组新的 2048 位 DH 参数:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

然后创建一个存放共用配置文件的文件夹,比如snippets:

mkdir /etc/nginx/snippets

可通过vim /etc/nginx/snippets/ssl.conf直接创建,然后在这个文件中添加以下内容

ssl_dhparam /etc/ssl/certs/dhparam.pem;

ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;

ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 30s;

add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload";
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;

里面的一些参数如果懂得的话可以稍作调整。

现在就可以获取证书了,以下命令

certbot -d blog.qingsongb2c.com --manual --preferred-challenges dns certonly
  • -d 后面跟你的域名,可为子域名
  • –manaual 手动授权方式
  • –preferred-challenges 使用DNS身份验证的方法,你需要根据提示手动添加一条TXT记录到DNS中以验证你的域名,这个记录一般都很快,不需要像添加A记录那样等待。

输入命令后,应该是这样显示的

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org
Requesting a certificate for blog.qingsongb2c.com
Performing the following challenges:
dns-01 challenge for blog.qingsongb2c.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.blog.qingsongb2c.com with the following value:

bChlgprIzr3o-chSuV4_xmFee0Xz7k3VdF7-pf8xkts

Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

如上,在你的域名管理后台添加一条名叫“_acme-challenge.blog.qingsongb2c.com”的txt记录,值为“bChlgprIzr3o-chSuV4_xmFee0Xz7k3VdF7-pf8xkts”,记得改成你自己的域名。保存好后回到你的命令界面,按Enter继续。

Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/blog.qingsongb2c.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/blog.qingsongb2c.com/privkey.pem
   Your certificate will expire on 2022-09-25. To obtain a new or
   tweaked version of this certificate in the future, simply run
   certbot again. To non-interactively renew *all* of your
   certificates, run "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

证书就创建好了,接下来配置以下nginx文件,看看网站是否已经挂锁。

4. 创建Nginx配置文件

通过vim /etc/nginx/conf.d/example.com.conf,example可改为你的域名

server {
    listen 80;
    server_name blog.qingsongb2c.com;
    return 301 https://blog.qingsongb2c.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name blog.qingsongb2c.com;

    root /var/www/qingsongb2c/blog;
    index index.html index.php index.htm; 

    access_log  /var/log/nginx/qingsongb2c.access.log  main;
    error_log /var/log/nginx/qingsongb2c-error.log;  

    ssl_certificate /etc/letsencrypt/live/blog.qingsongb2c.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/blog.qingsongb2c.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/blog.qingsongb2c.com/chain.pem;
    include snippets/ssl.conf;

    location ~ /\.ht {
        deny  all;     
    }


}

第一个server是通过非加密域名点进来的会强制跳转到加密链接,第二个server就是加密了的站点配置了,记得将我的域名改成你的域名,同样是:wq保存,然后输入systemctl restart nginx重启nginx服务。

安装免费Let's Encrypt SSL证书

你可以打开你的网站看看你的浏览器前面是否加了一把小锁,不要管你的网站内容,只要配置没错,就会出现加密的小锁。

5. 自动更新Let’s Encrypt SSL证书

这种模式需要脚本API才能完成自动更新,大家可以在网上搜索。

版权声明:本文原创文章,首发于青松跨境B2C,版权所有,未经允许,请勿转载!
转载请注明:如若转载,请先取得同意,然后注明原文链接,写点东西谁也不容易。

分享到

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理。

搜索
目录快览
    热门建站方式