公式のクライアントを使用するとROOT権限が必要なため証明書を取得することができないため
制約回避としてletsencrypt.shという互換クライアントを使用する。
【使い方】
- 適当なフォルダに移動し「git clone https://github.com/lukas2511/letsencrypt.sh」を実行
- 作成されたフォルダの中に入る「cd ./letsencrypt.sh」
- SSL証明書発行時、Let’s Encryptサーバから「http://ドメイン名/.well-known/acme-challenge/」にアクセスがおこなわれるためのフォルダ作成
今回は「letsencrypt.sh」フォルダの中に「tmp」フォルダを作成しシンボリックリンクで対応
「mkdir tmp」
「cd tmp」
「mkdir .well-known」
「cd .well-known」
「mkdir acme-challenge」 - シンボリックリンク作成(めんどくさいので.well-knownを作ってしまう。必要無ければ後で消しても良いが、再取得時に必要になる。)
「ln -s /home/ユーザID/パス/letsencrypt.sh/tmp/.well-known /home/ユーザID/www/.well-known」 - 「docs/examples」の「domains.txt.example」と「config.sh.example」を「letsencrypt.sh」フォルダにコピー
このとき「.example」を消しておくこと - 「config.sh」を編集
「WELLKNOWN」の部分を先ほど作成したフォルダに変更
「WELLKNOWN=”/home/ユーザID/パス/letsencrypt.sh/tmp/.well-known/acme-challenge”」 - domain.txtを編集
SSLの証明書を発行したいドメインをスペース区切りで書き出す - letsencrypt.shを実行
「./letsencrypt.sh –config ./config.sh –cron」% ./letsencrypt.sh –config ./config.sh –cron
# INFO: Using main config file ./config.sh
+ Generating account key…
+ Registering account key with letsencrypt…
Processing ドメイン名 with alternative names: ドメイン名
+ Signing domains…
+ Creating new directory ./certs/ドメイン名 …
+ Generating private key…
+ Generating signing request…
+ Requesting challenge for ドメイン名…
+ Responding to challenge for ドメイン名…
+ Challenge is valid!
+ Requesting certificate…
+ Checking certificate…
+ Done!
+ Creating fullchain.pem…
+ Done! - うまくいくと証明書が「certs/ドメイン名」に取得されるのでコントロールパネルから設定する
秘密鍵→「privkey.pem」
証明書→「cert.pem」(「fullchain.pem」を使うと中間証明書の設定作業がいらないかも)
中間証明書→「chain.pem」 - 証明書の取得から3ヶ月経過する前に8と9の作業を繰り返す
正直この作業が一番めんどくさい。最低でも年4回は作業しないといけないが作業を忘れそう。