CentOS5でシステムを運用しています。2010年にリリースしたシステムです。
新しいOSに乗り換えるべきなんですが、いろいろと複雑な事情があり、もう少し延命しなければなりません。
このシステムのSSL証明書を、無料のLet’s Encryptで取得することになりました。
Let’s Encryptについての記事はこちら
SSL証明書は無料で取得できる時代に
また、同じサーバー上で、
本番環境の「www.ドメイン名」とステージング環境の「stage.ドメイン名」が動いており、
マルチドメイン証明書を取得することにしました。
しかし、OSが古いことが原因で、途中さまざまな壁にあたり、都度、対処が必要でした。
以下、備忘録です。
まず、Let’s Encryptを利用するために公式の「certbot」というツールがあるのですが、
これがCentOS6以降でないと使えません。
いきなりの壁です。
しかし、CentOS5でも使える「dehydrated」という非公式のツールがありますので
こちらを使ってSSL証明書を取得することにします。
dehydratedはgitでインストールしますが、
CentOS5では標準でgitはありません。
そこでgitのインストールから始めます。
CentOS5にgitをインストールするため、EPELリポジトリを追加します。
しかし、ここでまた問題が。
CentOS5は2017年3月31日でサポートが終了したため
公開していたミラーサイトからリポジトリが削除されています。
そこで、古いOSをyumリポジトリとして公開している
http://vault.centos.org/
というサイトがありますので
そこをyumリポジトリに追加してgitをインストールします。
|
/etc/yum.repos.d/CentOS-Base.repo |
を開きます。
という行がいくつかあります。
この行をコメントアウトし、代わりに次の行を追加します。
|
baseurl=http://vault.centos.org/5.5/os/$basearch/ |
6箇所くらいあるので、それぞれ、上記の変更を行います。
私の環境はCentOS5.5ですので上記のディレクトリに「/5.5/」とありますが、
ここはバージョンによって適宜変更してください。
これでリポジトリが登録できたことになっているので、
yumでgitをインストールします。
|
yum install --enablerepo=epel git |
gitがインストール出来たら、やっと目的のツール「dehydrated」のインストールです。
|
git clone https://github.com/lukas2511/dehydrated.git |
インストールできたら、さっそくdehydratedを使ってSSL証明書を取得してみます。
まず、一時ディレクトリを作成します。
|
cd /var/www mkdir dehydrated |
次にApacheの設定ファイルを作成します。
|
cd /etc/httpd/conf.d vi dehydrated.conf |
dehydrated.confの内容は下記のとおりです。
|
Alias /.well-known/acme-challenge /var/www/dehydrated <Directory /var/www/dehydrated/> </Directory> |
ここまででApacheを再起動します。
次に、dehydratedの設定ファイルを作成します。
dehydratedをインストールした場所に移動し、
|
cp docs/examples/confg ./ |
同じディレクトリにdomains.txtというファイルを作成します。
このファイルには、SSL証明書を発行するドメインを記述します。
このとき、行を分けて複数のドメインを記述すると
ドメインごとに証明書が発行されますが、
1行にスペース区切りで複数のドメインを記述すると
1つのマルチドメイン証明書として発行されます。
今回は目的だったマルチドメイン証明書の記述を行います。
最初に記述したドメインがコモンネームとなります。
そして、証明書発行の前に、アカウントを登録する必要があります。
|
./dehydrated --config /~/dehydrated/config --register --accept-terms |
Done!と表示されたら完了です。
いよいよ証明書の発行です。
|
./dehydrated --config ./config --cron |
Done!と表示されたら証明書の発行完了です。
準備が大変でしたが、あっけなく発行できました。
あとは、ApacheのVirtualHostの設定で
複数のドメインに対して証明書ファイルを設定します。
いろんな書き方があると思いますが
私はssl.confにすべて記述しています。
ssl.conf(一部)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
NameVirtualHost *:443 <VirtualHost *:443> ServerName www.ドメイン名:443 SSLCertificateChainFile /root/dehydrated/certs/www.ドメイン名/chain.pem SSLCertificateFile /root/dehydrated/certs/www.ドメイン名/fullchain.pem SSLCertificateKeyFile /root/dehydrated/certs/www.ドメイン名/privkey.pem ~略~ </VirtualHost> <VirtualHost *:443> ServerName stage.ドメイン名:443 SSLCertificateChainFile /root/dehydrated/certs/www.ドメイン名/chain.pem SSLCertificateFile /root/dehydrated/certs/www.ドメイン名/fullchain.pem SSLCertificateKeyFile /root/dehydrated/certs/www.ドメイン名/privkey.pem ~略~ </VirtualHost> |
Apacheを再起動して完了です。
あとは、自動更新の設定ですが、cronで以下のようなコマンドを実行するだけです。
|
0 4 1 * * /インストール場所/dehydrated/dehydrated --config /インストール場所/dehydrated/config --cron >> /tmp/ログ名.log 2>&1 |
これで証明書の更新も勝手にやってくれます。たまにログは確認しましょう。
これでCentOS5でもLet’s Encryptでマルチドメイン証明書が利用できました。
無料ってのがすごいですね。