Let's Encrypt で証明書を発行する (Ubuntu 16.04 + Apache)
Let's Encrypt を使うと無料で証明書を発行することが出来ます。今回は Ubuntu 16.04 + Apache 環境で Let's Encrypt で証明書を発行する手順をメモしておきます。
後で必要になる為、もし git が入っていなければインストールしておきます。
GitHub から clone します。
| cd /opt
git clone https://github.com/letsencrypt/letsencrypt
|
ヘルプを表示してみます。
| cd letsencrypt/
./letsencrypt-auto --help
|
以下のようにヘルプが表示されれば OK です。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 | # ./letsencrypt-auto --help
(〜 省略 〜)
letsencrypt-auto [SUBCOMMAND] [options] [-d domain] [-d domain] ...
Certbot can obtain and install HTTPS/TLS/SSL certificates. By default,
it will attempt to use a webserver both for obtaining and installing the
cert. Major SUBCOMMANDS are:
(default) run Obtain & install a cert in your current webserver
certonly Obtain cert, but do not install it (aka "auth")
install Install a previously obtained cert in a server
renew Renew previously obtained certs that are near expiry
revoke Revoke a previously obtained certificate
register Perform tasks related to registering with the CA
rollback Rollback server configuration changes made during install
config_changes Show changes made to server config during installation
plugins Display information about installed plugins
Choice of server plugins for obtaining and installing cert:
--apache Use the Apache plugin for authentication & installation
--standalone Run a standalone webserver for authentication
(nginx support is experimental, buggy, and not installed by default)
--webroot Place files in a server's webroot folder for authentication
OR use different plugins to obtain (authenticate) the cert and then install it:
--authenticator standalone --installer apache
More detailed help:
-h, --help [topic] print this message, or detailed help on a topic;
the available topics are:
all, automation, paths, security, testing, or any of the subcommands or
plugins (certonly, install, register, nginx, apache, standalone, webroot,
etc.)
|
次は証明書を発行します。Web サーバが起動していると以下のように失敗してしまいます。
The program apache2 (process ID 19478) is already listening on TCP port 80.
This will prevent us from binding to that port. Please stop the apache2 program temporarily and then try again.
そこで一旦、Apache を停止しておきます。
証明書を発行します。証明するドメインは「EXAMPLE.COM」とします。
| ./letsencrypt-auto certonly -a standalone -d EXAMPLE.COM
|
発行された証明書は /etc/letsencrypt/live/EXAMPLE.COM/ 以下に保存されます。
| # ls /etc/letsencrypt/live/EXAMPLE.COM/
cert.pem chain.pem fullchain.pem privkey.pem
|
Apache が証明書を参照出来るように /etc/apache2/sites-available/default-ssl.conf を以下のように修正します。
| #SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
#SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
SSLCertificateFile /etc/letsencrypt/live/EXAMPLE.COM/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/EXAMPLE.COM/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/EXAMPLE.COM/chain.pem
|
SSL を利用したサイトを有効化しておきます。
SSL/TLS を利用するのでモジュールをロードしておきます。
| a2enmod ssl
a2ensite default-ssl
|
Apache を起動します。
これで SSL/TLS 接続が可能になっているはずです。