Nginxで無料のSSL証明書(Let’s Encrypt)を設定

スポンサーリンク

無料で利用できるSSL証明書

オンプレミスやクラウドサービス(AWS,Azure,さくらのクラウド)でWebサーバを構築されている方は、無料でSSL証明書を利用したいという方が多いことでしょう。
最近は、httpではなく、httpsでWebサーバを公開しなければSEOで不利になったり、警告が出たりと不自由なことが多いです。
そんな時に、便利なのがLets’s Encrypt(レッツエンクリプト)を利用した、無料のSSL証明書を利用する方法です。

ssl_top

Lets’s Encrypt(レッツエンクリプト)とは?

Lets’s Encryptは、パケットが暗号化されており安全なhttps通信を普及することを目的に設立された団体(認証局)です。
Webサービスでよく利用されている、http通信はパケットキャプチャ等の技術を用いることで、簡単に盗聴、傍受される恐れがあります。
個人で、wordpress等のWebサイトを開設している人には、無料でSSL証明書を利用できるのは、とてもありがたいですよね。
今回は、実際にNginxにSSL証明書を設定してきます。

Nginx + SSL証明書の設定(standalone)

SSL証明書の取得

  • 必要なパッケージをインストール
# yum -y install openssl git
  • gitからLets’s Encrypt関連のファイルをクローンする
# git clone https://github.com/certbot/certbot
  • certbotディレクトリへ移動する
# cd certbot
  • SSL証明書の作成
# ./certbot-auto certonly --standalone -d ドメイン名 -m foo@example.com --agree-tos -n

※証明書を取得する際に、80番ポートを利用するため、nginxやApache等の80番を利用するサービスを停止しなければエラーになります。

nginxの設定

  • リポジトリの登録
sudo vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1
  • インストール
# yum -y install nginx
  • nginxの設定ファイルを編集
# vi /etc/nginx/conf.d/default.conf
server {
listen 443; ←80から変更
server_name ドメイン名;

ssl on; ←追記
ssl_certificate /etc/letsencrypt/live/certs/ドメイン名/fullchain.pem←追記
ssl_certificate_key /etc/letsencrypt/live/ドメイン名/privkey.pem; ←追記
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
........
  • Nginxを起動
# systemctl restart nginx
  • ファイアウオール(https)を許可
# firewall-cmd --add-service=https --zone=public --permanent
  • cronを利用して定期的に証明書を更新させる
# crontab-e
0 0 1 * * {certbotディレクトリ}/certbot/certbot-auto renew && systemctl reload nginx

※毎月1日0時に更新する設定です。適所、書き換えてください。

これにて、設定は、終了です。

冒頭の画像のようにhttps://ドメイン名で接続できれば成功です。

証明書の有効期限は3ヶ月と短いので、個人利用される方は運用に注意が必要ですね!

今回は、standaloneのみの設定でしたので、次の回に、webrootでの設定を行いたいと思います。

タイトルとURLをコピーしました