AWSにLet’s EncryptでSSL証明書を組み込んでみた

おおまかな流れ

1.Let’s Encrypt インストール

2.SSLサーバ証明書取得

3.WebサーバにSSLを設定する

4.参考にしたサイト

途中からルート権限が必要なコマンドでもルート権限を付与せずにしているところがあるので
sudo su –
で全てのコマンドをルートとして実行することをおすすめします。

 

1.Let’s Encrypt のインストール

まず初めに Let’s Encrypt を ダウンロードする。
レポジトリをクローンする場所はどこでもOKです。
*この時gitを使用するのでgitをインストールしていない人はインストールしてください。

sudo yum -y install git
git clone https://github.com/letsencrypt/letsencrypt

ダウンロードしたLet’s Encryptのインストールです。
必要なパッケージも一緒にインストールされます。

cd letsencrypt
sudo ./letsencrypt-auto –debug –help

この時にpip関係でインストールに失敗する場合はpipをアップデートする必要があるかもしれません。
*pipとはPythonで書かれたパッケージ管理システムらしいです

sudo pip install –upgrade pip
sudo pip install –upgrade virtualenv
#この時コマンド見つからねーよって言われた時は↓↓↓を実行してください
#sudo /usr/local/bin/pip install –upgrade virtualenv

2.サーバ証明書の取得

Let’s Encrypt のインストールが終わったらWebサイトのSSL証明書を取得します。
*下記コマンドを実行するとWebサーバにアクセスされるのでファイアウォールで制限を掛けている場合は制限によっては失敗するかもしれないので注意してください。

./letsencrypt-auto certonly –webroot -w /var/www/html -d www.example.com -m xxx@gmail.com –agree-tos

下記のような表示があれば成功である

IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/blog.apar.jp/fullchain.pem. Your cert will
expire on 2016-05-18. To obtain a new version of the certificate in
the future, simply run Let’s Encrypt again.
– If like Let’s Encrypt, please consider supporting our work by:

オプションについて

  • –webroot
  • 現在稼働中のWebサーバを利用して証明書を取得するらしい。
    *もし稼働中のWebサーバがない場合は、「–webroot」の代わりに「–standalone」を指定すればいいらしい
  • -w
  • ドキュメントルートのパスを指定
  • -d
  • ドメイン名を指定
  • -m
  • メールアドレスを指定
  • –agree-tos
  • 利用規約に同意する

*また稼働中のWebサーバのポート番号がデフォルトじゃない場合、指定することもできる↓↓↓

–http-01-port 8080 #HTTP
–tls-sni-01-port 4443 #HTTPS

証明書の保存先

ルート権限じゃないとアクセスできないからルートで確認してください

  • 証明書
  • /etc/letsencrypt/live/ドメイン名/cert.pem
  • 証明書+中間CA証明書
  • /etc/letsencrypt/live/ドメイン名/fullchain.pem
  • 秘密鍵
  • /etc/letsencrypt/live/ドメイン名/privkey.pem
  • 中間CA証明書
  • /etc/letsencrypt/live/ドメイン名/chain.pem

3.WebサーバにSSLを設定する

apacheの場合

/etc/httpd/conf.d/ssl.conf ファイルを編集する
*SSLCertificateで検索すれば見つかります

SSLCertificateFile /etc/letsencrypt/live/ドメイン名/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/ドメイン名/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/ドメイン名/chain.pem

service httpd reload

nginxの場合

/etc/nginx/nginx.conf ファイルを編集する。
*ssl_certificateで検索すれば見つかります

ssl_certificate “/etc/letsencrypt/live/ドメイン名/cert.pem”;
ssl_certificate_key “/etc/letsencrypt/live/ドメイン名/privkey.pem”;

service nginx reload

4.参考にしたサイト

https://blog.apar.jp/linux/3619
http://qiita.com/hidekuro/items/482520f220a305dc147b