~~NOCACHE~~ ## LetsEncryptの導入 ### はじめに QNAPに構築したWebサーバにSSL証明書(Let's Encrypt)を導入する手順を記載する。 ### 事前準備 #### 前提 ##### 80portと443portで疎通可能なWebサーバが構築済みなこと {{:OtherTechnical:QNAP:pasted:20200529-103723.png?400}} ##### 設定するドメインに対して、QNAPから名前解決及び疎通可能なこと 名前解決できない場合は、/etc/hostsに設定するドメイン名とQNAPのIPアドレスを記載します。 ※ここ大事です、気づかずはまりました。 ##### opkgからgit及びgit-httpがインストール済みなこと [[https://qiita.com/KEINOS/items/f832ada264257300e4d7|こちら]]のサイトを参考にしてください。 ##### AppCenterから、Python3(3.5)がインストール済みなこと {{:OtherTechnical:QNAP:pasted:20200529-104152.png?400}} #### 導入手順 [[https://github.com/Yannik/qnap-letsencrypt|こちら]]のサイトの解説になります。 GitHubにある、qnap-letsencryptというツールを利用しています。 ##### qnap-letsencryptのダウンロード mkdir qnap-letsencrypt curl --silent https://curl.haxx.se/ca/cacert.pem | sha1sum curl --silent --location --remote-name --insecure https://curl.haxx.se/ca/cacert.pem sha1sum cacert.pem #ハイライト行実行後の結果で、ハッシュ値がコンソールに表示されるので一致していることを確認します。 git config --system http.sslVerify true git config --system http.sslCAinfo `pwd`/cacert.pem git clone https://github.com/Yannik/qnap-letsencrypt.git mv cacert.pem qnap-letsencrypt cd qnap-letsencrypt git config --system http.sslCAinfo `pwd`/cacert.pem ##### qnap-letsencryptの設定、実行 sh init.sh #ドメインが1つの場合は以下を、「nas.xxx.de」の部分は自身のドメインに書き換えます。 openssl req -new -sha256 -key letsencrypt/keys/domain.key -subj "/CN=nas.xxx.de" > letsencrypt/domain.csr #ドメインが2つの場合は以下を、「nas.xxx.de」「nas.xxx.com」の部分は自身のドメインに書き換えます。 cp openssl.cnf letsencrypt/openssl-csr-config.cnf printf "subjectAltName=DNS:nas.xxx.de,DNS:nas.xxx.com" >> letsencrypt/openssl-csr-config.cnf openssl req -new -sha256 -key letsencrypt/keys/domain.key -subj "/" -reqexts SAN -config letsencrypt/openssl-csr-config.cnf > letsencrypt/domain.csr #以降の手順で失敗した場合、Webサーバが起動失敗することがあります。 #その際は、cp /etc/stunnel/stunnel.pem.orig /etc/stunnel/stunnel.pem で復旧できます。 mv /etc/stunnel/stunnel.pem /etc/stunnel/stunnel.pem.orig sh renew_certificate.sh ##### 接続確認 Webサイトに接続、有効な証明書が設定されます。 {{:OtherTechnical:QNAP:pasted:20200529-111937.png}} ##### SSL証明書の定期自動更新 echo "30 3 * * * [qnap-letsencryptディレクトリパス]/renew_certificate.sh >> [qnap-letsencryptディレクトリパス]/renew_certificate.log 2>&1" >> /etc/config/crontab crontab /etc/config/crontab /etc/init.d/crond.sh restart {{tag>QNAP SSL証明書 実践的}}