MiracleLinux ; Let’s Encryptで証明書取得 , Apache SSL化

SSL証明書を取得する (Let’s Encrypt)

最新のopen sslをインストールしておく

# dnf install openssl-devel

1.証明書のインストール

# dnf -y install certbot
# certbot certonly –webroot -w /var/www/html/[ドメイン名] -d [ドメイン名]
# 初回のみメールアドレスの登録と利用条件への同意が必要
# 受信可能なメールアドレスを指定

Enter email address (used for urgent notices and lost key recovery)

<管理者メールアドレス>

< OK > <Cancel>

# 利用条件に同意する
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf.
You must agree in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory

<Agree > <Cancel>

IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/[ドメイン名]/fullchain.pem. Your cert will
expire on 2022-01-27. To obtain a new version of the certificate in
the future, simply run Let’s Encrypt again.
– If you like Let’s Encrypt, please consider supporting our work by:

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

# [Congratulations] と表示さえれば成功
# メッセージ中に記載の通り [/etc/letsencrypt/live/[ドメイン名]/] 配下に下記の証明書が取得されている

# cert.pem ⇒ SSLサーバー証明書(公開鍵含む)
# chain.pem ⇒ 中間証明書
# fullchain.pem ⇒ cert.pem と chain.pem が結合されたファイル
# privkey.pem ⇒ 公開鍵に対する秘密鍵

2.証明書を自動更新 (Let’s Encrypt)

①登録前のテスト
まず以下の–dry-runオプションを使って自動更新をテストしてみる。このオプションでは、証明書は更新されずに動作確認のみ実施されるため、証明書の取得回数制限に引っかかる心配もない

# /usr/bin/certbot renew –dry-run

②crontab登録

# crontab -e
# 毎月1日午前3時に、
# “root”ユーザが “/usr/bin/certbot renew”を実行
# “&&”で処理を連結
# WEBサーバー”apache”を再起動
00 03 01 * * root /usr/bin/certbot renew && /usr/sbin/service apache2 restart

Apache のhttps 化

1.Apache を再コンパイルして、インストール

# cd /usr/local/src/httpd-2.4.39/
# ./configure \
–with-layout=Apache \
–enable-module=auth_db \
–enable-module=so \
–enable-module=most \
–enable-mods-shared=reallyall \
–enable-rewrite \
–enable-auth_digest \
–enable-ssl
# make
# make install
# cd /usr/local/src/
# mv /lib/systemd/system/httpd.service /lib/systemd/system/httpd.service_bak2
httpd.serviceを新たに作成
# vi  /lib/systemd/system/httpd.service
httpd.serviceの内容
[Unit] Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target

[Service] Type = forking
ExecStart=/usr/local/apache2/bin/apachectl start
ExecStop=/usr/local/apache2/bin/apachectl stop

KillSignal=SIGCONT
PrivateTmp=true

[Install] WantedBy=multi-user.target

2.httpd.conf ファイルの編集

# vi /usr/local/apache2/conf/httpd.conf
●53 行目あたり
「Listen 0.0.0.0:443」を追加
●233 行目あたり
「ServerName localhost:443」を追加
●284 行目あたり
既存のバーチャルドメイン設定を次の通り変更
<VirtualHost *:80>
ServerAdmin <管理者メールアドレス>
ServerName <ドメイン名>
ServerSignature Off
RewriteEngine On
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,QSA,R=permanent] ErrorLog /var/log/httpd/redirect.error.log
LogLevel warn
ErrorDocument 404 /
</VirtualHost>
<VirtualHost *:443>
SSLEngine on
DocumentRoot /var/www/html/<ドメイン名>
ServerName <ドメイン名>
ServerAlias localhost
ErrorLog “| /usr/local/apache2/bin/rotatelogs /var/log/httpd/<ドメイン名>_error_log_%Y%m%d 86400 540”
CustomLog “| /usr/local/apache2/bin/rotatelogs /var/log/httpd/<ドメイン名>_access_log_%Y%m%d 86400 540” combined
<Directory “/var/www/html/<ドメイン名>”>
Options Indexes Includes FollowSymLinks MultiViews ExecCGI
Require all granted
#Allow from all
AddHandler server-parsed .html
Header always set Strict-Transport-Security “max-age=31536000; includeSubDomains”
</Directory>
SSLCertificateFile /etc/letsencrypt/live/<ドメイン名>/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/<ドメイン名>/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/<ドメイン名>/chain.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
●91 行目あたり
行頭の「#」を削除します。
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
●187 行目あたり
行頭の「#」を削除します。
LoadModule rewrite_module modules/mod_rewrite.so
●188 行目あたり
「LoadModule ssl_module modules/mod_ssl.so」を追加します。
Apache を再起動します。
# systemctl daemon-reload
# systemctl restart httpd.service
タイトルとURLをコピーしました