
しもむー

世界ではWebサービスのセキュリティ向上のため、これまでの平文HTTPから暗号化通信HTTPSへの移行「常時SSL/TLS」が進んでいます。
HTTPSしていないWebサイトでは、かなりの数のハッキングがされており、悪用されている恐れがあるのが背景です。
Google検索でもHTTPSされたサイトの検索順位を上位にランクする方針で、SEO対策的にもメリットがあります。
また一般の利用者もHTTPSを標準で利用する様にWebブラウザにて対応が進行しています。
特にGoogleのChromeは2017年から警告表示を開始しています。
グーグル、「Chrome 56」でHTTP接続への警告表示を開始
グーグル、HTTPページへの警告表示を強化へ--10月リリース予定の「Chrome 62」から
テキストボックスにてフォーム入力する際にはHTTPSでないとユーザーに警告される事になり、 金融やショピングなどのWebサイト以外でも今後「常時SSL/TLS」が求められて来る事でしょう。
無料でオープンな証明書を発行できるサービスです。手続き不要で、サーバーとドメインさえ持っていれば即時発行可能です。(Chromeでも緑の鍵マークになります)
従来は認証局に費用を払って購入していたSSL/TLS証明書ですが、DVに関しては無償で取得できる認証局があります。
2016年4月に正式サービスが開始されて商用利用も可能です。必要なのは申請する管理ドメインと連絡先メールアドレスだけです。
さっそく導入してみましょう。
環境は AmazonLinux + Apache2.4 です。(バージョン違いは適宜読み替えてください)
前提として上記は導入済みとします。まだの方はAWSのページなどを参考にインストールまで済ませてください。
セキュリティグループのインバウンドのHTTPS(433)を許可(0.0.0.0/0)にします。これをやらないと証明書を自動取得する際にエラーになります。
対象のインスタンスにSSHでログインし、以下を実行します。(rootじゃなければsudoつける) 権限も変更しておきましょう。 Let’s EncryptではSSL/TLS証明書を取得するツールとしてcertbotを推奨しています。
# curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto
# chmod 700 /usr/bin/certbot-autocerbotのインストールが成功したら以下のコマンドで自動生成します。
# certbot-auto certonly --webroot -w /var/www/html -d test.example.com --email hoge@example.com --debugオプション | 説明 |
|---|---|
certonly | 証明書の作成 |
--webroot | ウェブサーバーモードを指定 |
-w /var/www/html | ドキュメントルートのパス(自環境に合わせてください) |
-d test.example.com | 認証対象のドメイン名(ここでは例として左記) |
--email hoge@example.com | 連絡用のメールアドレス(ここも例として左記) |
--debug | Amazon Linuxはまだ実験的だそうでこのオプションつけないと実行できませんのでご注意。 |
certbotのコマンドだけでSSL/TLS証明書が取得できますが、自動設定よりオプション指定による取得を推奨しておきます。
以下のサイトにてオプションのガイドが日本語で解説されています。
次にライセンス承諾を求められます。
--------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree
in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
--------------------------------------------------------------------------
(A)gree/(C)ancel:Agree連絡先のメールアドレス宛にLet’s Encryptの認証確認メールが届きます。メール文中のリンクをクリックしてLet’s Encryptのサイトに行くと無事に承認されます。これでSSL/TLS証明書の発行準備が出来ましたので実行します。
[code lang=text]
--------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about EFF and our work to encrypt the web, protect its users and defend digital rights.
--------------------------------------------------------------------------
(Y)es/(N)o: Yes
Starting new HTTPS connection (1): supporters.eff.org
Obtaining a new certificate
Performing the following challenges:
tls-sni-01 challenge for test.example.com
Using the webroot path /var/www/html for all unmatched domains.
Waiting for verification...
Cleaning up challenges
Generating key (2048 bits): /etc/letsencrypt/keys/0000_key-certbot.pem Creating CSR: /etc/letsencrypt/csr/0000_csr-certbot.pem
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/test.example.com/fullchain.pem. Your cert
will expire on 2017-07-30. To obtain a new or tweaked version of
this certificate in the future, simply run certbot again. To
non-interactively renew *all* of your certificates, run ”certbot renew” しばらくすると以下のディレクトリに証明書が生成されます。申請したドメイン名とドキュメントルート、有効期限が表示されて無事にSSL/TLS証明書が取得出来ました。取得したSSL/TLS証明書は以下の場所にあります。
/etc/letsencrypt/live/test.example.com/
cert.pem
privkey.pem
chain.pem Apacheにmod_sslを未インストールならインストールします。
# yum install -y mod24_ssl/etc/httpd/conf.d/ssl.confに先ほど取得した証明書のパスを設定します。
...
SSLCertificateFile /etc/letsencrypt/live/test.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/test.example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/test.example.com/chain.pem
...Apacheを再起動すれば反映完了!ブラウザでhttps://~ で確認してみてください!
$ sudo service httpd restart上記の後に、http→httpsの強制リダイレクトや、証明書の自動更新設定などやっておいたほうがよいと思います。
WebサービスにHTTPにて接続を確認してみましょう。HTTPSにリダイレクトされたら、「常時SSL/TLS」する事が出来ます。
Let’s Encryptで取得したSSL/TLS証明書の有効期限は「3ヶ月」です。
cronで定期実行する事で更新します。
また更新間際でないと実際には更新が実行されない為、cronの定期実行は毎週行うことで漏れを防ぎます。
$ sudo crontab -e
30 2 * * 0 /bin/certbot renew --pre-hook ”service httpd restart”毎週日曜日AM2:30に実行し、Apacheを再起動する。
今まで証明書と言えばお金(最近は、1年1000円台もありますが)を払い、ドメイン承認などでとても時間がかかるイメージでしたが、非常に簡単にSSL化出来たので、ぜひみなさんもお試しください!
カテゴリー
最新の投稿
見えないIT負債が、会社の成長を止める
【AIで働き方が変わる?】SIerの価値は『作り手』から『伴走者』へ
たかが領収書、されど領収書 — AI 化してみたら、経理の判断は思ったより深かった
【1時間でアプリ完成】FLASH AI サービスが実現する「kintone×生成AI×プロノウハウ」の爆速開発とは?
IT人材の「採用」や「従来の高額外注」はもう不要?
【kintone×AI】毎月アプリを成長させる伴走支援「FLASH STEP」とは?
【kintone × AI】エンジニア生存戦略 ~AIに丸投げする人と、AIをパートナーとして使う人の決定的な差~
失敗しないkintone開発
脱・kintone運用の属人化!kintone×AIで実現する「誰でも扱える」運用体制の作り方
【製造・工場編】kintone × AIが変える現場の姿 生産管理・品質保証・設備保全におけるユースケース