ブログの右下隅やポップアップ広告が時々表示される場合があります。これはオペレーターのハイジャックです。このようにしたくない場合は、現時点でHTTPSの値を表すことができます。
HTTPSには多くの利点がありますが、ブログシステムのアップグレードに専念するには、これだけで十分です。
1ましょうが何であるかを理解しましょう暗号
レッツ・暗号化され た証明書。HTTPSを有効にする場合は、機関(以下、CA)から証明書を取得する必要があります。
また、Let's Encryptから、Webサイトのドメイン名の無料の証明書を取得できます。2 Certbotの概要Certbot は、Let's Encryptが証明書を取得するために推奨する公式クライアントであり、無料のLet'sEncrypt証明書を自動的に取得するのに役立ちます。Certbotは、すべてのUnixカーネルをサポートするオペレーティングシステムです。この記事の例は、CentOS7に基づいています。3無料の証明書を取得する3-1Certbotクライアントをインストールする
$ yum install certbot # CentOS
$ apt-get update && apt-get install certbot # Ubuntu
$ apk add --no-cache certbot # 用Docker alpine:nginx构建的容器
3-2証明書を取得する
certbot certonly --webroot -w /var/www/html/awaimai -d awaimai.com -d www.awaimai.com
上記のコマンドラインは
、両方のドメイン名の証明書を提供
awaimai.com
および
www.awaimai.com
生成します。使用
--webroot
モードでは
/var/www/awaimai
、に
.well-known
フォルダ
が作成されます。
このフォルダにはいくつかの確認ファイルが含まれており、certbotはにアクセスし
example.com/.well-known/acme-challenge
てドメインがこのサーバーにバインドされているかどうか
を確認します。証明書が生成された後、ディレクトリ内のドメイン名に対応するフォルダを表示できます。このフォルダには、証明書へのショートカットがいくつか保存されています。もちろん、証明書を保存するためのパスを指定することもできます。
/etc/letsencrypt/live/
--config-dir
certbot certonly --webroot -w /var/www/html/awaimai -d awaimai.com -d www.awaimai.com --config-dir /etc/nginx/conf.d/certs
certbotには、使用できる多くのパラメーターが用意されています。https://certbot.eff.org/docs/using.html#configuration-fileを参照して
ください 。3-3スタンドアロンモード ほとんどの場合、このコマンドでニーズを満たすことができます。ただし、一部のマイクロサービスなど、一部のサービスにはルートディレクトリがない場合があります。現時点では、-webrootの使用は機能しません。certbotには別のモードもあります 。このモードでは、Webサイトのルートディレクトリを指定する必要はありません。サーバーのポート443を自動的に有効にして、ドメイン名の所有権を確認します。ポート443を占有するnginxなどの他のサービスがあります。最初にこれらのサービスを停止し、証明書が生成された後にこれらのサービスを有効にする必要があります。
--standalone
certbot certonly --standalone -d example.com -d www.example.com
これまでのところ、最初の証明書の生成は完了しています。次のステップは、Webサーバーを構成し、HTTPSを有効にすることです。
4 Nginx構成HTTPSを有効にする
私の構成では、Nginxサーバーを使用してリクエストを転送します。これが私のNginx構成です。
server {
listen 80;
server_name www.awaimai.com awaimai.com;
rewrite ^(.*) https://www.awaimai.com$1 permanent;
}
server {
listen 443 ssl;
ssl on;
server_name www.awaimai.com;
root /var/www/html/awaimai;
index index.php;
ssl_certificate /etc/nginx/conf.d/certs/live/awaimai.com/fullchain.pem;
ssl_certificate_key /etc/nginx/conf.d/certs/live/awaimai.com/privkey.pem;
location ~ .php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /.ht {
deny all;
}
}
配置主要是监听
443
端口和启用 SSL,并配置了 SSL 的证书路径(公钥,私钥的路径),
通过这些配置,我们就可以成功启用Https了。
你打开网站的时候就可以看到标有 安全 的字样。比如:
5 自动更新 SSL 证书
配置完这些后,我们的工作尚未完成。
Let's Encrypt 提供的证书只有90天的有效期,我们必须在这些证书过期之前重新获得它们。有什么办法呢?
certbot 给我们提供了一个很方便的命令,那就是
certbot renew # 使用【默认配置目录】的更新命令
certbot renew --config-dir /etc/nginx/conf.d/certs # 使用【自定义配置目录】的更新命令
使用此命令,他将自动检查系统中的证书并自动更新它们。
注意:更新完成后需要重启Nginx:nginx -s reload
。
我们可以运行这个命令测试一下
certbot renew --dry-run
如果运行的时候出现了这个错误:Attempting to renew cert from /etc/letsencrypt/renewal/api.diamondfsd.com.conf produced an unexpected error: At least one of the required ports is already taken.. Skipping.
这是因为生成证书的时候使用的是 --standalone
模式。
这个模式在验证域名时,此模式需要启用端口443。此错误意味着要启用的端口已被占用。
这时候必须先关掉nginx,运行以下命令:
nginx -s stop
运行这个命令,没有报错的话,也就是所有的证书都刷新成功。证书是90天才过期,我们只需要在过期之前执行更新操作就可以了。
当然,这种不用我们每次去更新,我们容易忘记的,可以用linux的定时任务来完成。用 crontab做一个定时任务就可以了
新建了一个文件 certbot-auto-renew-cron
,写上 cron 计划:
15 2 * */2 * certbot renew --pre-hook "nginx -s stop" --post-hook "nginx -s start" # standalone模式
15 2 * */2 * certbot renew --post-hook "nginx -s reload" # 非standalone模式
命令的意思就是:每隔 两个月的 凌晨 2:15 执行更新操作。
--pre-hook
表示执行更新操作之前要做的事情。
--standalone
模式的证书需要停止 nginx 服务,解除端口占用。
--post-hook
表示执行更新操作完成后要做的事情,这里就恢复 nginx 服务的启用
最后我们用 crontab
来启动这个定时任务
crontab certbot-auto-renew-cron
至此,整个网站升级到HTTPS就完成了。
6 删除证书
删除所有证书:
$ sudo certbot delete
删除指定证书:
$ sudo certbot delete --cert-name example.com
删除指定目录下的指定证书:
$ certbot delete --cert-name example.com --config-d