役立つパソコンの知識を発信

UbuntuでLegoを使ってSSL証明書を作成する方法

当ページのリンクには広告が含まれています。

この記事では、UbuntuでLegoを使ってSSL証明書を作成する方法をご紹介します。

以前記事を書きました、『UbuntuにNginxをインストールして独自ドメインでアクセスする方法』をHTTPS化する続編になります。

Legoのインストール

LegoはSSL証明書を作成するためのツールです公式サイトからバイナリファイルをダンロードします。

実行ファイルをダウンロードします。

$ cd ~/
$ wget https://github.com/go-acme/lego/releases/download/v4.8.0/lego_v4.8.0_linux_amd64.tar.gz

ダウンロードしたファイルを解凍します。

sudo tar zxf lego_v4.8.0_linux_amd64.tar.gz

/usr/local/binあたりに移動します。

sudo mv lego /usr/local/bin

実際にlegoを実行してバージョンが表示されるか確認します。

$ /usr/local/bin/lego -v
lego version 4.8.0 linux/amd64

次に、SSH証明書を作成するコマンドを作成します。<your document root> <your domain> <your email address> の部分は自身の環境に置き換えてください。

$ sudo /usr/local/bin/lego --accept-tos \
    --path "/etc/lego" \
    --http \
    --http.webroot "<your document root>" \
    --domains "<your domain>" \
    --email "<your email address>" \
    run

実行が完了すると/etc/lego/certificatesに証明書関連のファイルが作成されるので確認します。

$ sudo ls /etc/lego/certificates
ubuntu.hitori-josys.me.crt         ubuntu.hitori-josys.me.json
ubuntu.hitori-josys.me.issuer.crt  ubuntu.hitori-josys.me.key

無事作成が確認できたらNginxの設定ファイルを開きます。

$ sudo vi /etc/nginx/sites-available/ubuntu.hitori-josys.me

前回の記事で書き込んだ設定を以下の設定に書き換えます。

server {
    listen 80;
    server_name ubuntu.hitori-josys.me;     access_log /var/log/nginx/ubuntu.hitori-josys.me-access.log;
    error_log /var/log/nginx/ubuntu.hitori-josys.me-error.log;
    return 301 https://$host$request_uri;
}
server {
    listen 443 ssl;
    server_name ubuntu.hitori-josys.me;
    access_log /var/log/nginx/ubuntu.hitori-josys.me-access.log;
    error_log /var/log/nginx/ubuntu.hitori-josys.me-error.log;
    ssl_certificate /etc/lego/certificates/ubuntu.hitori-josys.me.crt;
    ssl_certificate_key /etc/lego/certificates/ubuntu.hitori-josys.me.key;
>     location / {
        root /var/www/ubuntu.hitori-josys.me;
        index index.html index.htm;
    }
}

設定を保存したら設定内容をチェックします。

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

問題なければNginxをリロードして反映します。

$ sudo systemctl reload nginx

ブラウザで再度アクセスするとhttpsにリダイレクトされます。鍵マークが出ていれば完了です。

目次

SSL証明書の自動更新

最後にSSL証明書の期限が切れないよう、自動設定をしておきます。Cronに自動更新の設定を書き込みます。以下の例では毎月1日に自動更新を実行する場合です。

$ sudo vi /etc/cron.d/lego
0 0 1 * * /usr/local/bin/lego --path "/etc/lego" --http --http.webroot "<your document root>" --domains "<your domain>" --email "<your email address>" --renew-hook "/usr/bin/systemctl reload nginx"

設定反映のためCronを再起動します。

$ sudo systemctl restart cron
この記事をシェア
  • URLをコピーしました!
目次