見出し画像

Ubuntu18でcertbot+lets' encryptを使ってワイルドカード証明書を複数取得して常時SSL化+リバースプロキシがしたい

環境

Apatch2.4とNginx
443とかのポート開放済
さくらのVPSの1G
DNS-01 チャレンジ
さくらのVPSのゾーン設定
freenom

cerbotインストールしてバージョン確認

sudo apt-get install certbot
certbot --version

起動

sudo systemctl start certbot

実行

sudo certbot certonly --manual \
--server https://acme-v02.api.letsencrypt.org/directory \
--preferred-challenges dns \
-d ワイルドカード.サーバー名 -d サーバー名 -d 以下同じ \
-m SSL証明書が切れる時に教えて欲しいメールアドレス \
--agree-tos \
--manual-public-ip-logging-ok

上記を実行するとメールアドレスにメルマガ送ってもいい?と聞かれるので「y」をタイプしてエンター。

TXTレコード登録

Please deploy a DNS TXT record under the name
_acme-challenge.8528.cf with the following value:
(なんだか複雑な文字列)

と出るので、各ネームサーバーのゾーン設定に


NAME(エントリ名):_acme-challenge
TYPE(種別): TXT
TTL:3600
TARGET(値):(上記のなんだか複雑な文字列)

を設定。
さくらのネームサーバの場合、DNSチェックの設定は「する」のままにしておく、TTLのチェックはいれない。

DNSが浸透するまで適当に待つ。へそでお茶でも沸かしてればいいんじゃないかな。

しばらくしてからエンターキーを押す。

ネームサーバーを管理してるサイトが違えば設定するTXTレコの値も違うので注意な!HTTPサーバーは一度オフにしておくこと。
ここで通ったか確認できる→https://www.cman.jp/network/support/nslookup.html

あとはエンター押していく。エラーが出たらよく読む。待ち時間が30分とかいるかもしれない。

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:(以下略)

と出たら成功です。お疲れ様でした。

SSLキー生成されたか確かめる

sudo ls /etc/letsencrypt/live/ドメイン名/

中にREADME cert.pem chain.pem fullchain.pem privkey.pemがあるのが確認できればOK。

Apache2にmod_sslを導入

apache2の大元の設定はググりながら頑張ってください。ServerRootとかDocmentRootとか。

httpd.confの136行付近にある
LoadModule ssl_module modules/mod_ssl.soのコメントアウトを外す

sudo a2enmod ssl する。

sudo vim /etc/apache2/sites-available/バーチャルホスト管理してるやつ.conf に


SSLEngine on
SSLCertificateFile
 /etc/letsencrypt/live/該当ドメイン名/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/該当ドメイン名/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/該当ドメイン名/chain.pem

を追加していく。

もしもデフォルトのファイルを使っていないならそちらはコメントアウト。
Nginxのデフォルトとバーチャルに被らないポート番号にする。80と443以外がおぬぬめ。

エラー吐いたら sudo apache2ctl -S の中にいろいろある。

NginxにSSLを設定する

conf.d/virtual.conf に以下を追加。(conf.dコメントアウトしてるけど一応?)

listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/代表にしたいドメイン名/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/代表にしたいドメイン名/privkey.pem;

proxy_pass https://127.0.0.1:任意の捨ててもいいSSL用ポート番号;

捨ててもいいポート番号なのは別にそのポートでブラウザから接続できるようにはならないため。先にApacheを動かしてからNginxを動かします。ポート番号被りって怒られちゃう><;
sudo systemctl restart apache2 && sudo nginx

常時SSL化リダイレクトと拡張子によるサーバーの振り分け

常時SSL化しよう!
PHPなんかは動的ファイルが得意なApache2に、jpgとかの静的ファイルは大量にさばくのが得意なNginxに任せよう!(リバースプロキシ)

nginx/sites-available内に必要なバーチャルホストの数だけバーチャルホスト名.confとして以下を保存。

server {
listen 80;
server_name バーチャルホスト名;
return 301 https://バーチャルホスト名$request_uri;
break;
}
server {
listen 443 ssl;
server_name バーチャルホスト名;
ssl on;
ssl_certificate
/etc/letsencrypt/live/該当ドメイン名/fullchain.pem;
ssl_certificate_key
/etc/letsencrypt/live/該当ドメイン名/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSV1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
client_max_body_size 20M;
location / {
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass バーチャルホストIPアドレス:ポート番号;
break;
}
}

SSL化して怒られたときは。

sudo chmod 755 /etc/letsencrypt/archive/
sudo chmod 755 /etc/letsencrypt/live/
Let’s Encrypt + Apache でちゃんと証明書の生成が完了してるのに ‘*.pem’ does not exist or is empty というエラーが出る時のメモ様より引用)

設定中に何か間違えたら。

【Nginx】portが占領されてサーバーが起動できないときの対処法

CGI許可とIP直打ち禁止はApacheでやるといいと思う

参考

Ubuntu18.04でlets' encryptを使って証明書を取得する方法

チャレンジのタイプ

[Ubuntu 18.04/LTS]letsencryptでワイルドカード認証を取るぞ![nginx/1.17.3]

CertbotでLet's Encryptのワイルドカード証明書を取得・更新する

Let's EncryptのDNS-01チャレンジでのSSL証明書更新(手動)

[インストール] Apache 2.x + mod_ssl + OpenSSL(新規・更新)

nginxでVirtualHostを使って複数ドメインサイトを構築&SSLに対応する

Let's Encrypt で Nginx にSSLを設定する

Apache2の一般的な問題を修正する方法

マルチドメイン化とLet's Encrypt証明書導入

CertbotでLet's Encryptのワイルドカード証明書を取得・更新する

.htaccessでHTTPアクセスをSSLでリダイレクト(逆もアリ)

WEB ARCH LABO

Let’s Encrypt + Apache でちゃんと証明書の生成が完了してるのに ‘*.pem’ does not exist or is empty というエラーが出る時のメモ

【Nginx】portが占領されてサーバーが起動できないときの対処法

トラベラーという昔のSFRPGのソロジャーナル化を頑張っています。印刷代の足しにしてやるぜ!という嬉しい方がいましたらメンバーシップ入って頂けると喜びます。