安装好SSL证书并强制HTTP转HTTPS

分两部分来说:

一、安装好SSL证书

幸亏以前装过证书,就少走弯路,直奔Let’s Encrypt。

可是,智者千虑,必有一失。忽略了Vultr官方自带证书安装,耽误不必要的时间精力。具体参考 Install Let’s Encrypt SSL on One-Click WordPress

步骤清晰明了:

1. Install Certificate

SSH to the server as root and run certbot. Here’s an example:

# certbot --nginx --redirect -d example.com -d www.example.com -m admin@example.com --agree-tos

2. Verify Automatic Renewal

Let’s Encrypt certificates are valid for 90 days. The certbot wizard updates the systemd timers and crontab to automatically renew your certificate.

  1. Verify the timer is active.
    # systemctl list-timers | grep 'certbot\|ACTIVATES'
  2. Verify the crontab entry exists.# ls -l /etc/cron.d/certbot
  3. Verify the renewal process works with a dry run.
    # certbot renew --dry-run

安装好证书就试试https访问,正常的话域名前面有个小锁的图标,点击可以查看证书有效期。

本站测试https下安装证书ok,但是发现http不会自动跳转https,于是便着手解决,那就是第二部分内容。

二、强制HTTP跳转HTTPS

按说第一步命令已包含强制跳转

–redirect 

Redirect all HTTP requests to HTTPS.

无奈只有手动解决,巧的是vultr官网也有这个问题解决办法。

Redirect HTTP Requests To HTTPS On Nginx

主要就是增加几行代码,其中加粗的是重中之重,稍后再说。

    server {

        listen 80;

        server_name example.com www.example.com;

        # Redirect all port 80 (HTTP) requests to port 443 (HTTPS).

        return 301 https://example.com$request_uri;

    }

以为按上面添加几行就皆大欢喜?没呢,最后还有命令,让配置文件生效。

本人用的是service nginx reload。终于搞定!

命令参考如下:

nginx -s signal

signal 的值如下:
stop:fast shutdown,快速的停止 nginx
quit:graceful shutdown,不再接受新的请求,等正在处理的请求出完成后在进行停止(优雅的关闭)
reload:reloading the configuration file,重新加载配置文件
reopen:reopening the log files,重新写入日志文件

文末补充以上操作的软硬件环境:

硬件:苹果本M1 MacBookPro 16G+1T

软件:利用vultr的官方自带终端

事后小结、一定要耐心细致,特别是命令的使用。

张贴在IT

发表评论

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