1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CertbotのでSSL/TLS証明書を発行する

Last updated at Posted at 2021-06-02

今回はCertbotというツールを使って証明書を取得し、HTTPS通信によってサイトを公開しました。
記事の内容について間違った記述などありましたら遠慮せず教えていただけると幸いです。

環境

OS: Ubuntu 20.04.2
サーバー: Apache
前提: ドメインを設定してhttpでの公開までできている段階を想定しています。

※ドメイン設定についてのわかりやすい記事です。
ApacheのVirtualHostってなんだ(Qiita記事)

Certbotとは

Webサイトをhttps://で始まる安全な通信で公開するためのサービスのひとつです。
(ざっくり)

Let'sEncryptという証明書発行サービスが提供しているツールで、ドメインが設定されたサーバー上でこのCertbot(サートボット)を実行すると、ドメインとサーバーの管理者が一致しているか検証します。無事検証できれば自動的に証明書が発行され、安全が担保されるというわけですね。

インストールする

まずはサーバー上でapt-getコマンドでもってCertbotをインストールします。

$ sudo apt-get install certbot

初手から不穏ですね。。
インストールの時は文字がダーーーと流れそうですが、4行しか表示されませんでした。

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package certbot <-- 特にこの1行がなんか怪しい

何やらCertbotのパッケージが見つからないそうです。

パッケージをインストールする

レポジトリを追加するようにしてあげるといいとグーグル先生が申しておりましたので、add-apt-repositoryを実行します。
ちなみにppaとは「パーソナルパッケージアーカイブ」というUbuntu非公式のレポジトリのことだそうです。

$ sudo add-apt-repository ppa:certbot/certbot

すると以下のようなメッセージが

sudo: add-apt-repository: command not found

明らかに上手くいってません。
add-apt-repositoryってなんだよと怒られました。
僕だって知りませんよ、と逆ギレしそうです。

続:パッケージをインストールする

apt-get installでパッケージ名を指定してもインストールできない原因は、デフォルトでリポジトリに登録されていないからだそうです。
ですので、まずは諸々のパッケージが入ったsoftware-properties-commonをインストールしましょう。

$ sudo apt-get install software-properties-common

文字がダーーーっと流れると少し安心します。
さて、再度add-apt-repositoryを試してみます。

$ sudo add-apt-repository ppa:certbot/certbot

今度はいけました。(この時の安堵感ってなんとも言えないですね)
一応apt-getを更新してから、certbotをインストールします。

$ sudo apt-get update
$ sudo apt-get install certbot

確認します。

$ certbot --version
certbot 0.40.0

気持ちいいです。

Apache用プラグインをインストールする

続いてApache用のプラグインをaptからインストールします。

$ sudo apt-get install python3-certbot-apache

TLS証明書を発行する

インストールできたら、次のコマンドで証明書を発行できます。
~~は記述しなくて大丈夫です。

$ certbot --apache --domains ~~ここにドメインを記述~~ --email ~~ServerAdminに設定したアドレス~~

すると、対話式で利用規約やら登録用のメールアドレスやらを聞かれます。
細かい記述やパスは作業環境によって異なってくると思います。
なお、実際のドメイン名は伏せ字にしています。

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Cert not yet due for renewal

You have an existing certificate that has exactly the same domains or certificate name you requested and isn't close to expiry.
(ref: /etc/letsencrypt/renewal/~~ここにドメイン~~.conf) <--確認で2回目だからrenewalついてる

What would you like to do?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Attempt to reinstall this existing certificate
2: Renew & replace the cert (limit ~5 per 7 days)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 
今回はrenewにしときたいので2でEnterキー押下


Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 
HTTP通信をHTTPSにリダイレクトするかしないか
よく分からないので1でEnterキー押下


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Your existing certificate has been successfully renewed, and the new certificate
has been installed.

The new certificate covers the following domains:
https://www.~~~~

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=www.~~~~
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/www.~~~~/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/www.~~~~/privkey.pem
   Your cert will expire on 2021-08-31. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

無事に証明書をインストールできました。
試しにhttps://~~登録したドメイン~~でアクセスしてみましょう。

また、証明書には有効期限(90日間)があります。古くなった証明書を手作業で更新するのは面倒なので、更新作業を自動化することもできます。

自動化手続きについては以下のサイトでわかりやすくまとめられていますので、参考にしてみてください。
Certbotを使い3分で無料のSSL証明書を取得する<外部リンク>

おわりに

SSL/TLSには「暗号化」「改ざん検出」「認証」という3つの機能があるそうです。
今やHTTP通信だと警告が出るようになっていたりするので、基本はHTTPS通信で公開しておきたいですよね。
ということは、一連の手続きは今後もお目にかかることが多そうです。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?