【Linux】SSL証明書の取得について

LinuxペンギンLinux
この記事は約4分で読めます。

前提

  • ドメインを取得し名前解決できる状態にしておく。
  • webサーバー(apache等)をインストールして、virtualhostの設定を完了している必要がある。
    ※厳密には、vitualhostの設定は不要だけども、その場合のドキュメントルートは/var/www/htmlとなる。
    ※webサーバーは必須

環境

  • OS
cat /etc/os-release | grep -i pretty
> PRETTY_NAME="Ubuntu 20.04.6 LTS"

コマンド

  • インストール
apt install -y certbot
  • 証明書発行コマンドを実行
certbot certonly --webroot \
-w {$DOCUEMNT_ROOT} \
-d {$ドメイン} \
--email {$メールアドレス} \
--agree-tos \
--renew-by-default \
--non-interactive
ケン
ケン

{$DOCUEMNT_ROOT}には、virtualhostで設定したドキュメントルートを書く!

virtualhostを設定していない場合は、/var/www/htmlと書く。

{$ドメイン}には、自分で取得したドメインを書く!

{$メールアドレス}には、自分のメアドを書く!

▼実際の例

certbot certonly --webroot \
-w /home/piyo \ ← wは、WorkSpaceの略かな
-d express-it.site \ ← dは、Domainの略かな
--email hogehoge@gmail.com \
--agree-tos \
--renew-by-default \
--non-interactive
  • ↑コマンドによって生成されたファイルを確認
ls /etc/letsencrypt/live/hogehoge.com

> cert.pem
> privkey.pem
> chain.pem
↑があればok

virtualhostの設定

  • 設定ファイルを開く
vi /etc/apache2/sites-available/hogehoge.conf
  • 以下を追記
<VirtualHost *:443>
  DocumentRoot /home/piyo
  ServerName hogehoge.com
  DirectoryIndex index.html index.php

  <Directory /home/piyo>
    AllowOverride All
    Options -Indexes +FollowSymLinks
    Require all granted
  </Directory>
  SSLCertificateFile /etc/letsencrypt/live/hogehoge.com/cert.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/hogehoge.com/privkey.pem
  SSLCACertificateFile /etc/letsencrypt/live/hogehoge.com/chain.pem
</VirtualHost>
  • 設定確認して再読み込み
apachectl -t
systemctl reload apache2

▼virtualhostの詳細説明は以下の記事を見てね。

【apache】virtualhostの設定
インストールapacheインストールapt install -y apache2 SSLモジュール有効化(HTTPS通信をサポート)a2enmod sslrewriteモジュールを...

検証

仕組みが気になる人向けに余談。。。

コマンドを叩くと、/.well-known/acme-challengeディレクトリにファイルが作成される。

<TOKEN>と<ドメイン>をLet’sのサーバーに知らせる。

そのリクエストを受けたLet’sのサーバーはドメインをまずドメインから名前解決してIPを取得。

そして、送られてきたドメインをリクエストヘッダのHostに設定して、http:80でアクセスする。

アクセス先のファイルを検証してドメインの正当な所有者であることを確認すると、
/etc/letsencrypt/live/hogehoge.comディレクトリに、
cert.pem, private.pem, chain.pemを作成する。

ケン
ケン

SSLコマンドを調べると、これだけでいけるの!?ってくらい短いコマンドでやってくれるけど、裏側の仕組みを知らないとスッキリしないよね。。。

仕組みはすごく単純で、コマンドを叩くと、Let’sサーバーが自分たちのサーバーにアクセスしにきて本当にこのドメイン持ってんのか、おいって感じて調べに来るだけなんだね。

コメント