~~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証明書 実践的}}