Size: 8833
Comment:
|
Size: 8520
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 30: | Line 30: |
=== Let's Encrypt SSL証明書の作成と更新 (方法1) === | == Let's Encrypt SSL証明書の作成と更新 == == EPELの certbot を使用する場合 == |
Line 33: | Line 37: |
*[[https://letsencrypt.jp/|Let'sEncrypt公式ドキュメント_日本語版]] | *[[https://free-ssl.jp/|Let's Encrypt 総合ポータル(公式ではない)]] |
Line 37: | Line 41: |
SL7/CentOS7 の場合 | |
Line 39: | Line 42: |
1.certbotを epelからインストール | 1.certbotを epelからインストール (2021.5.28時点で CentOS7/SL7 および CentOS 8 に certbot がepelにある) |
Line 51: | Line 55: |
その後、自分のEmailアドレスを入力、規約を読み承諾(A)gree する。後半の選択(share your email address with the Electronic Frontier | その後、自分のEmailアドレスを入力(証明書の有効期限の19日前にメール通知がくる)、規約を読み承諾(A)gree する。後半の選択(share your email address with the Electronic Frontier |
Line 79: | Line 83: |
必要な証明書のpath (下記のsymbolic linkの元を指定:更新するとlink先のファイル名が変わる) | 必要な証明書のpath (下記のsymbolic linkの元を指定:証明書を更新するとlink先のファイル名が変わる) |
Line 94: | Line 98: |
# 2018.02.06 https://www.ssllabs.com/ssltest/analyze.html?d=ribfxxx.riken.jp | # https://mozilla.github.io/server-side-tls/ssl-config-generator/ # https://www.ssllabs.com/ssltest/analyze.html |
Line 102: | Line 107: |
4.Apache httpd 追加 security設定、 httpd/http.conf 中 | 4.Apache httpd の追加 security設定、 httpd/http.conf中(DocumentRootの直前あたりで) |
Line 121: | Line 126: |
更新を apache httpdが動いている状態で行いたい時は、crontabで {{{ certbot renew --webroot -w /var/www/html/ --post-hook "systemctl reload httpd" }}} あるいは 更新を standalone で行いたい時は |
更新を standalone で行いたい時は |
Line 131: | Line 132: |
注:certbot renew実行時は http/https は外部に対して openしている必要がある. | NB1:certbot renew実行時は http/https は外部に対して openしている必要がある. |
Line 134: | Line 135: |
== Let's Encrypt SSL証明書の作成と更新 (方法2)== | NB2: apache httpdが動いている時のcertbotでの更新はエラーでうまく実行できない時があるので注意。 更新は standalone で行うのが安全 (2019.3.25追記) |
Line 136: | Line 138: |
Subject: [system 37120] LetsEncryptのSSL証明書を使ってみました Date: Thu, 5 Jul 2018 13:47:16 +0900 |
crontabの実際の設定例(SL7.6) {{{ 50 2 * * 1 certbot renew --webroot-path /var/www/html/ --pre-hook "systemctl stop httpd" --post-hook "systemctl start httpd" }}} (2019.8.19動作再検証OK, @ribfml) |
Line 139: | Line 144: |
皆様、 | == certbot-auto を使用する場合 == |
Line 141: | Line 146: |
最近はNIIで証明書を発行してもらっているSSLですが、試しに無料のLet'sEncryptを使ってみました。 結果は今の所良好です。ribfana03はribfsvnという別名も持っているのですが、別々にドメイン証明書を取ることで両方とも使えています。 特徴は「とにかく簡単」ということです。 また、有効期間が90日しかありません。cronを使って自動更新をして行くのが一般的な使い方のようです。 port 80がオープンになっていないと証明書取得できないという制約もあります。(例えば、ファイアウォールで理研所内だけに接続を限定している場合は使えない) |
ホスト名がribfsv.riken.jpの場合。 |
Line 147: | Line 148: |
1. port 80と443はファイアーウォールで開けておく。 2. (RHEL8/Centos8)の場合のみ python3-virtualenv を 事前にdnfでインストールします {{{ # dnf install python3-virtualenv }}} 3. 以下を実施して certbot-auto を取得し実行可能にする/ {{{ # wget https://dl.eff.org/certbot-auto # chmod a+x certbot-auto }}} 4. httpd 一旦止める (service httpd stop) {{{ # sudo ./certbot-auto certonly -a standalone -d ribfsv.riken.jp }}} 5. これでドメイン証明書が取得できる。成功すると/etc/letsencrypt/live/ribfsv.riken.jp以下にファイルが出来る。(virtualホストしている場合は、その数だけドメイン証明書を取得しておく) 6. ssl.conf あるいはSSLのvirtual hostの定義中で {{{ SSLCertificateFile /etc/letsencrypt/live/ribfsv.riken.jp/cert.pem SSLCertificateChainFile /etc/letsencrypt/live/ribfsv.riken.jp/chain.pem SSLCertificateKeyFile /etc/letsencrypt/live/ribfsv.riken.jp/privkey.pem }}} の設定を追加。 7. httpd再開。(service httpd start) 8. cronで毎月1,11,21日に証明書を更新チェックする設定(証明書期限の30日前にならないと実際には更新されない) Virtual hostで多数のドメインを設定している場合でも、以下のコマン一つで更新が必要なVirtual hostに対しての更新が実施される。 |
|
Line 148: | Line 174: |
以下、参考までにapache(SL6)の場合手順です。ホスト名がribfsvn.riken.jpの場合。 | RHEL7,8 (CentOS7,8 SL7.8)の場合のcrontabの例 (2020.06 確認済) {{{ 12 1 1,11,21 * * /root/letsencrypt/certbot-auto renew --webroot -w /dir/path/.. --post-hook "systemctl reload httpd" }}} /dir/path/.. は DocumentRoot の directory path |
Line 150: | Line 180: |
1. port 80と443はファイアーウォールで開けておく。 ※理研の監査の時にhttpd.confにTraceEnable off を入れておかないと合格しない。SSLに関しては一旦オレオレ証明書で監査を通しておく。 |
RHEL6 (CentOS6 SL6)の場合のcrontabの例 (2020.06 確認済) {{{ 12 1 1,11,21 * * /root/letsencrypt/certbot-auto renew --webroot -w /dir/path/.. --post-hook "/etc/init.d/httpd reload" }}} |
Line 154: | Line 185: |
2. wget https://dl.eff.org/certbot-auto chmod a+x certbot-auto (Centos7の場合はcertbotというプログラムをepel経由でyumからでも取得できるらしい) 3. httpd 一旦止める (service httpd stop) 4. sudo ./certbot-auto certonly -a standalone -d ribfsvn.riken.jp 5.これでドメイン証明書が取得できる。成功すると/etc/letsencrypt/live/ribfsvn.riken.jp以下にファイルが出来る。(virtualホストしている場合は、その数だけドメイン証明書を取得しておく) 6. ssl.confで {{{ SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:!RC4+RSA:+HIGH:+MEDIUM:+LOW:+3DES SSLCertificateFile /etc/letsencrypt/live/ribfsvn.riken.jp/cert.pem SSLCertificateChainFile /etc/letsencrypt/live/ribfsvn.riken.jp/chain.pem SSLCertificateKeyFile /etc/letsencrypt/live/ribfsvn.riken.jp/privkey.pem }}} の設定を追加。(SSLCipherSuiteの部分はRC4をDisableしないとSSLLabsでA評価がもらえない) 7. httpd再開。(service httpd start) 8. cronで毎月1,15日に証明書を更新チェックする設定(証明書期限の30日前にならないと実際には更新されない) 12 1 1,15 * * /root/letsencrypt/certbot-auto renew --webroot -w /var/www/html ※certbot-auto renew --webroot -w /var/www/html が更新のコマンド。/var/www/htmlに一時ファイルが作られる。別のディレクトリでも良いはず。virtual hostが複数あってもこのコマンド一つで全部更新してくれる(はず)。 H.B. |
※certbot-auto renew が更新のコマンド。 |
SSL証明書の作成方法
SSL自己発行証明書(暫定)の作成
1. opensslを使用してSHA1で署名する場合(期限10年)
openssl genrsa -out test.key 2048 openssl req -new -key test.key -x509 -days 3652 -out test.crt -sha1
内容の確認方法
openssl x509 -text -noout -in test.crt
Let's Encrypt SSL証明書の作成と更新
EPELの certbot を使用する場合
参考
1.certbotを epelからインストール (2021.5.28時点で CentOS7/SL7 および CentOS 8 に certbot がepelにある)
# yum install epel-release # yum install certbot python-certbot-apache
2. httpdを停止して、初期の証明書ファイルを作成 (注:あらかじめ、SSL自己発行証明書でセキュリティ監査を受け、http/https は外部にopenしていること) -d の後に、証明したいホストのFQDNを記述する。
# systemctl stop httpd # certbot certonly --standalone -d ribfnewhost.riken.jp
その後、自分のEmailアドレスを入力(証明書の有効期限の19日前にメール通知がくる)、規約を読み承諾(A)gree する。後半の選択(share your email address with the Electronic Frontier Foundation)は、必要があれば承諾する(無理に承諾する必要はない)その後、以下のようにSSL証明書が作成されるので、これらを /etc/httpd/conf.d/ssl.conf 中で指定。
Starting new HTTPS connection (1): supporters.eff.org Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org Obtaining a new certificate Performing the following challenges: http-01 challenge for ribfnewhost.riken.jp Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/ribfnewhost.riken.jp/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/ribfnewhost.riken.jp/privkey.pem Your cert will expire on 2019-02-05. 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
必要な証明書のpath (下記のsymbolic linkの元を指定:証明書を更新するとlink先のファイル名が変わる)
# ls -l /etc/letsencrypt/live/ribfnewhost.riken.jp/ total 4 -rw-r--r-- 1 root root 682 Nov 7 14:28 README lrwxrwxrwx 1 root root 39 Nov 7 14:28 cert.pem -> ../../archive/ribfnewhost.riken.jp/cert1.pem lrwxrwxrwx 1 root root 40 Nov 7 14:28 chain.pem -> ../../archive/ribfnewhost.riken.jp/chain1.pem lrwxrwxrwx 1 root root 44 Nov 7 14:28 fullchain.pem -> ../../archive/ribfnewhost.riken.jp/fullchain1.pem lrwxrwxrwx 1 root root 42 Nov 7 14:28 privkey.pem -> ../../archive/rribfnewhost.riken.jp/privkey1.pem #
3. conf.d/ssl.conf 中 以下の設定等
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 # https://mozilla.github.io/server-side-tls/ssl-config-generator/ # https://www.ssllabs.com/ssltest/analyze.html SSLCipherSuite 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:!DSS:!3DES SSLHonorCipherOrder on SSLCertificateFile /etc/letsencrypt/live/ribfnewhost.riken.jp/cert.pem SSLCertificateChainFile /etc/letsencrypt/live/ribfnewhost.riken.jp/chain.pem SSLCertificateKeyFile /etc/letsencrypt/live/ribfnewhost.riken.jp/privkey.pem
4.Apache httpd の追加 security設定、 httpd/http.conf中(DocumentRootの直前あたりで)
# Security ServerTokens Prod ServerSignature Off TraceEnable Off # httproxy RequestHeader unset Proxy Header unset X-Powered-By # Click Jack Header append X-FRAME-OPTIONS "SAMEORIGIN" # XSS Header set X-XSS-Protection "1; mode=block" Header set X-Content-Type-Options nosniff
5.証明書の有効期限は3ヶ月なので、cronで自動更新の設定(週に〜1度程度実行)
更新を standalone で行いたい時は
certbot renew --pre-hook "systemctl stop httpd" --post-hook "systemctl start httpd"
を実行。(--pre-hook --post-hook は実際に更新が行われる時のみに実行される)
NB1:certbot renew実行時は http/https は外部に対して openしている必要がある. 上記は apache httpd で Document Root を標準の /var/www/html/ として使用している場合。
NB2: apache httpdが動いている時のcertbotでの更新はエラーでうまく実行できない時があるので注意。 更新は standalone で行うのが安全 (2019.3.25追記)
crontabの実際の設定例(SL7.6)
50 2 * * 1 certbot renew --webroot-path /var/www/html/ --pre-hook "systemctl stop httpd" --post-hook "systemctl start httpd"
(2019.8.19動作再検証OK, @ribfml)
certbot-auto を使用する場合
ホスト名がribfsv.riken.jpの場合。
- port 80と443はファイアーウォールで開けておく。
- (RHEL8/Centos8)の場合のみ python3-virtualenv を 事前にdnfでインストールします
# dnf install python3-virtualenv
- 以下を実施して certbot-auto を取得し実行可能にする/
# wget https://dl.eff.org/certbot-auto # chmod a+x certbot-auto
- httpd 一旦止める (service httpd stop)
# sudo ./certbot-auto certonly -a standalone -d ribfsv.riken.jp
- これでドメイン証明書が取得できる。成功すると/etc/letsencrypt/live/ribfsv.riken.jp以下にファイルが出来る。(virtualホストしている場合は、その数だけドメイン証明書を取得しておく)
- ssl.conf あるいはSSLのvirtual hostの定義中で
SSLCertificateFile /etc/letsencrypt/live/ribfsv.riken.jp/cert.pem SSLCertificateChainFile /etc/letsencrypt/live/ribfsv.riken.jp/chain.pem SSLCertificateKeyFile /etc/letsencrypt/live/ribfsv.riken.jp/privkey.pem
の設定を追加。
- httpd再開。(service httpd start)
- cronで毎月1,11,21日に証明書を更新チェックする設定(証明書期限の30日前にならないと実際には更新されない)
Virtual hostで多数のドメインを設定している場合でも、以下のコマン一つで更新が必要なVirtual hostに対しての更新が実施される。
RHEL7,8 (CentOS7,8 SL7.8)の場合のcrontabの例 (2020.06 確認済)
12 1 1,11,21 * * /root/letsencrypt/certbot-auto renew --webroot -w /dir/path/.. --post-hook "systemctl reload httpd"
/dir/path/.. は DocumentRoot の directory path
RHEL6 (CentOS6 SL6)の場合のcrontabの例 (2020.06 確認済)
12 1 1,11,21 * * /root/letsencrypt/certbot-auto renew --webroot -w /dir/path/.. --post-hook "/etc/init.d/httpd reload"
※certbot-auto renew が更新のコマンド。