Let's Encrypt。SSL証明書を新規取得後、削除

セキュリティLet's Encrypt

目次一覧

 状態:-  閲覧数:397  投稿日:2019-05-21  更新日:2019-05-21
Webサイト新規作成準備 / Webサイト新規作成 / 証明書取得

証明書削除することを決定した理由 / 現状確認 / 証明書削除実行

Nginx再起動前に現状確認 / Nginx再起動失敗 / Nginx再起動失敗した原因が判明

SSL証明書削除に伴う、Nginx 設定修正対応 / Nginx再起動成功

Webサイト新規作成準備 / Webサイト新規作成 / 証明書取得

 閲覧数:135 投稿日:2019-05-21 更新日:2019-05-21 

Webサイト新規作成準備


現状のNginx設定ファイル確認
$ ls -l /etc/nginx/conf.d/
-rw-r--r-- 1 root root 2133  4月 13 02:17 b.conf


$ less /etc/nginx/conf.d/b.conf
server {
   server_name  b.example.com;

   root   /var/www/html/example.com/b.example.com;

   index  index.php index.html index.htm;

   location / {
       try_files $uri $uri/ /index.php?$query_string;
   }

   error_page   500 502 503 504  /50x.html;

   location = /50x.html {
       root   /usr/share/nginx/html;
   }

   location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        include fastcgi_params;
   }
}


リネーム
$ sudo mv /etc/nginx/conf.d/b.conf /etc/nginx/conf.d/b.example.com.conf

Nginx再起動
$ sudo sh -c 'nginx -t && systemctl restart nginx.service || systemctl status nginx.service -l'
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful


ブラウザで表示確認
・b.example.comが正常表示されることを確認

Webサイト新規作成


$ sudo vi /etc/nginx/conf.d/a.example.com.conf
$ sudo sh -c 'nginx -t && systemctl restart nginx.service || systemctl status nginx.service -l'
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful


ブラウザで表示確認
・a.example.comが正常表示されることを確認

証明書取得


Certbotが自動的にNginxの設定を編集
$ sudo certbot --nginx
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: a.example.net

114: a.example.com

121: b.example.com

177: x.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):


114,121
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for a.example.com
http-01 challenge for b.example.com
Waiting for verification...
Cleaning up challenges
Resetting dropped connection: acme-v02.api.letsencrypt.org
Deploying Certificate to VirtualHost /etc/nginx/conf.d/b.w4c.wotk.conf
Deploying Certificate to VirtualHost /etc/nginx/conf.d/a.example.com.conf

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

2
Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/b.w4c.wotk.conf
Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/a.example.com.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://b.example.com and
https://a.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=b.example.com
https://www.ssllabs.com/ssltest/analyze.html?d=a.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
  /etc/letsencrypt/live/b.example.com/fullchain.pem
  Your key file has been saved at:
  /etc/letsencrypt/live/b.example.com/privkey.pem
  Your cert will expire on 2019-08-19. To obtain a new or tweaked
  version of this certificate in the future, simply run certbot again
  with the "certonly" option. 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


ブラウザで表示確認
・a.example.comが(httpsで)正常表示されることを確認
・b.example.comが(httpsで)正常表示されることを確認

証明書削除することを決定した理由 / 現状確認 / 証明書削除実行

 閲覧数:145 投稿日:2019-05-21 更新日:2019-05-21 

証明書削除することを決定した理由


正常動作するが、b.w4c.wotk.confファイル名を間違えていたため、一旦削除することにした
・正常動作しているため、本来であれば削除対応する必要はない
・Nginx設定ファイル名を間違えていることが単に気味が悪いだけ(後で分かりづらくなるかも)

Nginx設定ファイル名をリネームせずに、削除する理由
・Certbotは、自動的にNginx設定ファイルを編集している
・ファイル名変更がどう影響を及ぼすか分からないため、最初からやり直すことにする
※Certbot処理は内部的にはかなり複雑だと思う。単にコマンドを打っているレベルの理解度のため、想定外の状況に陥った際、対処できなくなる可能性がある

現状確認


$ sudo ls -l /etc/letsencrypt/live/
合計 4
-rw-r--r-- 1 root root 740  2月  1 08:55 README
drwxrwxrwx 2 root root   6  4月 13 01:56 a.example.com
drwxr-xr-x 2 root root  88  5月 21 11:22 b.example.com
drwxr-xr-x 2 root root  88  4月 10 02:16 e.example.org
drwxr-xr-x 2 root root  88  4月 20 00:51 g.example.net
drwxr-xr-x 2 root root  88  4月  3 05:40 p.example.com


a.example.com
・以前削除した内容
・削除の仕方がまずかったらしくディレクトリが残っている
・中身は空

b.example.com
・今回作成されたディレクトリ

証明書削除実行


今回取得した証明書「b.example.com」を削除
・成功
$ sudo certbot revoke --cert-pat=/etc/letsencrypt/live/b.example.com/cert.pem
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you like to delete the cert(s) you just revoked, along with all earlier
and later versions of the cert?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es (recommended)/(N)o:

y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Deleted all files relating to certificate b.example.com.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully revoked the certificate that was located
at /etc/letsencrypt/live/b.example.com/cert.pem

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


前回取得した証明書「a.example.com」を削除
・失敗
※ディレクトリは残っているが、cert.pemファイルは削除済のため
$ sudo certbot revoke --cert-pat=/etc/letsencrypt/live/a.example.com/cert.pem
usage: 
 certbot [SUBCOMMAND] [options] [-d DOMAIN] [-d DOMAIN] ...

Certbot can obtain and install HTTPS/TLS/SSL certificates.  By default,
it will attempt to use a webserver both for obtaining and installing the
certificate.
certbot: error: argument --cert-path: No such file or directory


確認
$ sudo ls -l /etc/letsencrypt/live/
合計 4
-rw-r--r-- 1 root root 740  2月  1 08:55 README
drwxrwxrwx 2 root root   6  4月 13 01:56 a.example.com
drwxr-xr-x 2 root root  88  4月 10 02:16 e.example.org
drwxr-xr-x 2 root root  88  4月 20 00:51 g.example.net
drwxr-xr-x 2 root root  88  4月  3 05:40 p.example.com


前回取得した証明書「a.example.com」ディレクトリを手動で削除
$ sudo rm -rf /etc/letsencrypt/live/a.example.com
$ sudo ls -l /etc/letsencrypt/live/
合計 4
-rw-r--r-- 1 root root 740  2月  1 08:55 README
drwxr-xr-x 2 root root  88  4月 10 02:16 e.example.org
drwxr-xr-x 2 root root  88  4月 20 00:51 g.example.net
drwxr-xr-x 2 root root  88  4月  3 05:40 p.example.com


Nginx再起動前に現状確認 / Nginx再起動失敗 / Nginx再起動失敗した原因が判明

 閲覧数:131 投稿日:2019-05-21 更新日:2019-05-21 

Nginx再起動前に現状確認


ブラウザで表示確認
・a.example.comが正常表示されることを確認
・b.example.comが正常表示されることを確認

$ less /etc/nginx/conf.d/a.example.com.conf
server {
   server_name  a.p.example.com;

   root   /var/www/html/p.example.com/a.p.example.com;

   index  index.php index.html index.htm;

   location / {
       try_files $uri $uri/ /index.php?$query_string;
   }

   error_page   500 502 503 504  /50x.html;

   location = /50x.html {
       root   /usr/share/nginx/html;
   }

   location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        include fastcgi_params;
   }
# managed by Certbot

   listen 443 ssl; # managed by Certbot
   ssl_certificate /etc/letsencrypt/live/b.p.example.com/fullchain.pem; # managed by Certbot
   ssl_certificate_key /etc/letsencrypt/live/b.p.example.com/privkey.pem; # managed by Certbot
   include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
   ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
   if ($host = a.p.example.com) {
       return 301 https://$host$request_uri;
   } # managed by Certbot


   server_name  a.p.example.com;
   listen 80;
   return 404; # managed by Certbot


}


Nginx再起動失敗


$ sudo sh -c 'nginx -t && systemctl restart nginx.service || systemctl status nginx.service -l'
nginx: [emerg] BIO_new_file("/etc/letsencrypt/live/b.example.com/fullchain.pem") failed (SSL: error:02001002:system library:fopen:No suc file or directory:fopen('/etc/letsencrypt/live/b.example.com/fullchain.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)
nginx: configuration file /etc/nginx/nginx.conf test failed
● nginx.service - nginx - high performance web server
  Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
  Active: active (running) since 火 2019-05-21 11:17:36 JST; 55min ago
    Docs: http://nginx.org/en/docs/
 Process: 22240 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=0/SUCCESS)
 Process: 22244 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
 Process: 22243 ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 22247 (nginx)
  CGroup: /system.slice/nginx.service
          ├─22247 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.con
          ├─22280 nginx: worker process                  
          └─22281 nginx: worker process                  

5月 21 11:17:35 ■■.vs.sakura.ne.jp systemd[1]: Starting nginx - high performance web server...
5月 21 11:17:36 ■■.vs.sakura.ne.jp nginx[22243]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
5月 21 11:17:36 ■■.vs.sakura.ne.jp nginx[22243]: nginx: configuration file /etc/nginx/nginx.conf test is successful
5月 21 11:17:36 ■■.vs.sakura.ne.jp systemd[1]: Failed to read PID from file /var/run/nginx.pid: Invalid argument
5月 21 11:17:36 ■■.vs.sakura.ne.jp systemd[1]: Started nginx - high performance web server.


証明書削除確認
・確かに削除されている
$ ls -l /etc/letsencrypt/renewal
合計 12
-rw-r--r-- 1 root root 644  4月 18 22:48 e.example.org.conf
-rw-r--r-- 1 root root 597  4月 20 00:51 g.example.net.conf
-rw-r--r-- 1 root root 542  4月 18 22:48 p.example.com.conf


証明書削除確認
・確かに削除されている
$ sudo certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
 Certificate Name: e.example.org
   Domains: e.example.org
   Expiry Date: 2019-07-08 16:16:24+00:00 (VALID: 48 days)
   Certificate Path: /etc/letsencrypt/live/e.example.org/fullchain.pem
   Private Key Path: /etc/letsencrypt/live/e.example.org/privkey.pem
 Certificate Name: g.example.net
   Domains: g.example.net
   Expiry Date: 2019-07-18 14:51:13+00:00 (VALID: 58 days)
   Certificate Path: /etc/letsencrypt/live/g.example.net/fullchain.pem
   Private Key Path: /etc/letsencrypt/live/g.example.net/privkey.pem
 Certificate Name: p.example.com
   Domains: p.example.com
   Expiry Date: 2019-07-01 19:40:02+00:00 (VALID: 41 days)
   Certificate Path: /etc/letsencrypt/live/p.example.com/fullchain.pem
   Private Key Path: /etc/letsencrypt/live/p.example.com/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


Nginx再起動失敗した原因が判明


Nginx へ行った設定は残ったままなので、手動で削除する必要がある
・証明書取得時には自動で追記されるが、証明書削除時には自動で削除されないため注意が必要


SSL証明書削除に伴う、Nginx 設定修正対応 / Nginx再起動成功

 閲覧数:135 投稿日:2019-05-21 更新日:2019-05-21 

SSL証明書削除に伴う、Nginx 設定修正対応


$ less /etc/nginx/conf.d/a.example.com.conf
server {
   server_name  a.example.com;

   root   /var/www/html/example.com/a.example.com;

   index  index.php index.html index.htm;

   location / {
       try_files $uri $uri/ /index.php?$query_string;
   }

   error_page   500 502 503 504  /50x.html;

   location = /50x.html {
       root   /usr/share/nginx/html;
   }

   location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        include fastcgi_params;
   }
# managed by Certbot

#    listen 443 ssl; # managed by Certbot
#    ssl_certificate /etc/letsencrypt/live/b.example.com/fullchain.pem; # managed by Certbot
#    ssl_certificate_key /etc/letsencrypt/live/b.example.com/privkey.pem; # managed by Certbot
#    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
#    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

#server {
#    if ($host = a.example.com) {
#        return 301 https://$host$request_uri;
#    } # managed by Certbot


#    server_name  a.example.com;
#    listen 80;
#    return 404; # managed by Certbot


#}



$ sudo vi /etc/nginx/conf.d/b.w4c.wotk.conf
・何度も手動で削除対応(コメントアウト)していると、コメントアウト箇所が増加していく
server {
   server_name  b.example.com;

   root   /var/www/html/example.com/b.example.com;

   index  index.php index.html index.htm;

   location / {
       try_files $uri $uri/ /index.php?$query_string;
   }

   error_page   500 502 503 504  /50x.html;
   location = /50x.html {
       root   /usr/share/nginx/html;
   }

   location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        include fastcgi_params;
   }


   #listen 443 ssl; # managed by Certbot
   #ssl_certificate /etc/letsencrypt/live/a.example.com/fullchain.pem; # managed by Certbot
   #ssl_certificate_key /etc/letsencrypt/live/a.example.com/privkey.pem; # managed by Certbot
   #include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
   #ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot


# managed by Certbot

#    listen 443 ssl; # managed by Certbot
#    ssl_certificate /etc/letsencrypt/live/b.example.com/fullchain.pem; # managed by Certbot
#    ssl_certificate_key /etc/letsencrypt/live/b.example.com/privkey.pem; # managed by Certbot
#    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
#    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
#server {
#    if ($host = b.example.com) {
#        return 301 https://$host$request_uri;
#    } # managed by Certbot


#    listen       80;
#    server_name  b.example.com;
#    return 404; # managed by Certbot


#}
#server {
#    if ($host = b.example.com) {
#        return 301 https://$host$request_uri;
#    } # managed by Certbot


#    server_name  b.example.com;
#    listen 80;
#    return 404; # managed by Certbot


#}


Nginx再起動成功


$ sudo sh -c 'nginx -t && systemctl restart nginx.service || systemctl status nginx.service -l'
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful


ブラウザで表示確認
・a.example.comが(httpsで)表示されないことを確認。httpsで表示される
・b.example.comが(httpsで)表示されないことを確認。httpsで表示される


Let's Encrypt。各種パス

Let's Encrypt。SSL証明書を新規取得



週間人気ページランキング / 9-14 → 9-20
順位 ページタイトル抜粋 アクセス数
1 PHPのmb_send_mail関数でメール送信できない | メール処理システム 29
2 Nginx設定。エラーログレベル | Nginx(Webサーバ) 21
3 Python 3.5 アンインストール / yum remove | Python(プログラミング言語) 11
4 FFmpeg 2.8.15 を yum インストール | ソフトウェアスイート 10
5 PHP実行ユーザ設定 / CentOS6 / Apache | PHP(プログラミング言語) 9
6 PHP Version 7.1.2 php-mecabエクステンション対応 / PHP 7.0.14 からのアップグレード  | MeCab(形態素解析) 8
6 ソースからビルドしたPython 2.7.3 アンインストール失敗 | Python(プログラミング言語) 8
7 touch コマンド / viコマンド。新規ファイル作成時の違い | Linuxコマンド 7
7 さくらVPS0 7
8 9回目-13.MySQL5.7.21設定 | CentOS 7 2週間無料のお試し期間 9回目(さくらVPS) 6
8 「設定ファイルに、暗号化 (blowfish_secret) 用の非公開パスフレーズの設定を必要とするようになりました。」対応 6
9 PHPファイルでchmodエラー | PHP(プログラミング言語) 5
9 設定 2019/1/22 / 一般ユーザがmailコマンドでメール送信 / 管理者がmailコマンドでメール送信 5
10 Postfix | メール処理システム 4
10 CentOSでcpコマンド動作確認するためには、Control + T ではなく、 -v オプションを使用 | cp(Linuxコマンド) 4
10 499 (Request has been forbidden by antivirus) | HTTP(通信プロトコル) 4
10 tar | Linuxコマンド 4
10 Python 3.6 インストール / make altinstall | Python(プログラミング言語) 4
10 「CentOS6」から「CentOS7」への移行 | CentOS 7 (CentOS) 4
10 echo と cat の違い 4
2021/9/21 1:01 更新