[Server] nginx + golang な環境をhttps化する

お世話になっております。
しゃまとんです。

前回の記事につづいてnginx + golangな環境をhttps化してみました。

[Server] nginx + golangな環境で502 Bad Gatewayになった時のこと
お世話になっております。 しゃまとんです。 Goを使って、Webアプリケーションを作る際に80ポートを直接設定できない(しづらい)ので何か...

今回もLet’s Encryptを使ってhttps化していきます。
環境を作るにあたってこちらがとても参考になりました。
Let’s Encrypt で Nginx にSSLを設定する

まずはサーバーでletsentrypt(certbot)を取得して証明書の発行を行います。
私の場合はroot直下で作業しました。

問題なければCongraturation!!と表示されます。
次にnginxのtls周りを設定します。nginx.confのtls部分を下記のようにしました。
初期状態だとコメントアウトされているので外して証明書やproxy_passを設定します。

設定後は忘れずリロードか再起動を行いましょう。
これでhttpsでのアクセスが可能になっているはずです。

次にnginxは80ポートをバインドするので、Let’s Encrypt側を–webrootを使った形式に変更しておきます。(これは最初からこちらでもよかったかも)

更新時の確認用パスとなるディレクトリを作成し、renewalしてみます。
実行後にCongraturation!!とでればOKです。

再度nginx側の設定を変更します。
以降はhttpでのアクセスは全てhttpsにリダイレクトするようにしておきます。
ただしletsentryptはhttpsを利用するため、先程のディレクトリを指定し対象のアドレスのみHTTPを許可しておきます。

設定したら再度nginxをリロードまたは再起動し、renewを実行してみます。

ログがこんな感じならOKでしょう。

もしうまくいかない場合は上記の例だと/var/letsencrypt/.well-known配下にindex.htmlとか作ってみて、curlでURLを叩いてみるといいかもしれません。
というのも、renewは何回か失敗すると一定時間実行できなくなるようなので。。

あとはファイルがあるはずなのに403 Forbiddenになってしまうような場合は、SELinuxが影響している場合もありますのでgetenforceして確かめてみるといいかもしれません。

nginxで権限を設定した後も403 Forbiddenが出た話

必要ならcronも設定しておくとよいですね。

これで一応ですが、nginx + golangな環境にhttpsを導入することができました。
以上です。

■ 参考

[Server] letsencryptを使ってhttps化しました
お世話になっております。 しゃまとんです。 少し前から気になっていたホームページのHTTPS化ですが、なんとなくやる気持ちになったので対応...