CentOS5でシステムを運用しています。2010年にリリースしたシステムです。
新しいOSに乗り換えるべきなんですが、いろいろと複雑な事情があり、もう少し延命しなければなりません。
このシステムのSSL証明書を、無料のLet’s Encryptで取得することになりました。
Let’s Encryptについての記事はこちら
また、同じサーバー上で、
本番環境の「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をインストールします。
| 1 | /etc/yum.repos.d/CentOS-Base.repo | 
を開きます。
| 1 | mirrorlist=(省略) | 
という行がいくつかあります。
この行をコメントアウトし、代わりに次の行を追加します。
| 1 | baseurl=http://vault.centos.org/5.5/os/$basearch/ | 
6箇所くらいあるので、それぞれ、上記の変更を行います。
私の環境はCentOS5.5ですので上記のディレクトリに「/5.5/」とありますが、
ここはバージョンによって適宜変更してください。
これでリポジトリが登録できたことになっているので、
yumでgitをインストールします。
| 1 | yum install --enablerepo=epel git | 
gitがインストール出来たら、やっと目的のツール「dehydrated」のインストールです。
| 1 | git clone https://github.com/lukas2511/dehydrated.git | 
インストールできたら、さっそくdehydratedを使ってSSL証明書を取得してみます。
まず、一時ディレクトリを作成します。
| 1 2 | cd /var/www mkdir dehydrated | 
次にApacheの設定ファイルを作成します。
| 1 2 | cd /etc/httpd/conf.d vi dehydrated.conf | 
dehydrated.confの内容は下記のとおりです。
| 1 2 3 | Alias /.well-known/acme-challenge /var/www/dehydrated <Directory /var/www/dehydrated/> </Directory> | 
ここまででApacheを再起動します。
次に、dehydratedの設定ファイルを作成します。
dehydratedをインストールした場所に移動し、
| 1 | cp docs/examples/confg ./ | 
同じディレクトリにdomains.txtというファイルを作成します。
| 1 | vi domains.txt | 
このファイルには、SSL証明書を発行するドメインを記述します。
このとき、行を分けて複数のドメインを記述すると
ドメインごとに証明書が発行されますが、
1行にスペース区切りで複数のドメインを記述すると
1つのマルチドメイン証明書として発行されます。
今回は目的だったマルチドメイン証明書の記述を行います。
| 1 | www.ドメイン名 stage.ドメイン名 | 
最初に記述したドメインがコモンネームとなります。
そして、証明書発行の前に、アカウントを登録する必要があります。
| 1 | ./dehydrated --config /~/dehydrated/config --register --accept-terms | 
Done!と表示されたら完了です。
いよいよ証明書の発行です。
| 1 | ./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で以下のようなコマンドを実行するだけです。
| 1 | 0 4 1 * * /インストール場所/dehydrated/dehydrated --config /インストール場所/dehydrated/config --cron >> /tmp/ログ名.log 2>&1 | 
これで証明書の更新も勝手にやってくれます。たまにログは確認しましょう。
これでCentOS5でもLet’s Encryptでマルチドメイン証明書が利用できました。
無料ってのがすごいですね。
