Ubuntu10.04 に Let’s Encrypt (dehydrated)を入れる

訳あって最新版にできない Ubuntu10.04に Let’s Encrypt (dehydrated)を入れるためのメモ

前段階として、Ubuntu10.04 を update しておく。
それから、openssl と curl を TLS1.2対応にする。

# vim /etc/apt/sources.list

jp.archive –> old-releases
security –> old-releases

# apt-get update
# apt-get -y upgrade openssl
# apt-get -y upgrade curl

# cd
# wget https://www.openssl.org/source/openssl-1.0.2o.tar.gz
# tar xvfz openssl-1.0.2o.tar.gz
# cd openssl-1.0.2o
# ./config –prefix=/usr –openssldir=/usr/share/ssl shared
# make
# make test
# make install
# apt-get -y upgrade openssl

# cd
# wget http://curl.mirror.anstey.ca/curl-7.58.0.tar.bz2
# tar xf curl-7.58.0.tar.bz2
# cd curl-7.58.0
# ./configure –enable-libcurl-option –with-ssl=/usr –prefix=/usr
# make
# make test
# make install
# apt-get -y upgrade curl
# curl -V
# curl https://login.starbucks.co.jp/login

最後のスタバのログイン画面は TLS1.2でアクセスできたかどうかの確認。

Let’s Encrypt を入れるために、推奨されているのは Certbot なんだけど、python2.7 が必要だったり、Ubuntu10.04 にはいろいろ足りないものが多くて断念。
同じ機能(Certbot互換)の dehydrated でやってみる。(もちろんできたからこれを書いているんだけど)
git clone や wget でSSLエラーが出るので、tar.gzを取ってきて解凍。
あと、いろいろ面倒なので、root で作業。(よい子はマネしないように)

# curl -kLO https://github.com/lukas2511/dehydrated/releases/download/v0.6.2/dehydrated-0.6.2.tar.gz
# tar xf dehydrated-0.6.2.tar.gz
# cd dehydrated-0.6.2
# cp docs/examples/config config
# vim config # configのWELLKNOWNのコメントを外す

WELLKNOWN=”/var/www/dehydrated”

# mkdir /var/www/dehydrated
# chmod 755 /var/www/dehydrated
# vim /etc/apache2/conf.d/dehydrated.conf

Alias /.well-known/acme-challenge /var/www/dehydrated
<Directory /var/www/dehydrated/>
</Directory>
# これがないと怒られる。

# service apache2 restart

# apache2を再起動させないで「./dehydrated -c –accept-terms」をやるとエラーになります。
+ Challenge validation has failed :(
ERROR: Challenge is invalid! (returned: invalid) (result: {
“type”: “http-01″,
“status”: “invalid”,
“error”: {
“type”: “urn:ietf:params:acme:error:connection”,
“detail”: “Fetching http://hogehoge.com/wp-signup.php?new=hogehoge.jp: Error getting validation data”,
“status”: 400
},
ERROR: Challenge is invalid! (returned: invalid) (result: {
“type”: “http-01″,
“status”: “invalid”,
“error”: {
“type”: “urn:ietf:params:acme:error:unauthorized”,
“detail”: “Invalid response from http://hogehoge.jp/.well-known/acme-challenge/13oQnXoFMzKWEXdSXmavt-UTcW7CS_CD-UlQ9L_nhtY: \”\u003c!DOCTYPE html\u003e\r\n\u003chtml dir=\”ltr\” lang=\”ja\”\u003e\r\n\u003chead\u003e\r\n\u003cmeta charset=\”UTF-8\” /\u003e\r\n\u003ctitle\u003eNothing found for Well-known Acme-challe\”",
“status”: 403
},

# vim domains.txt

hogehoge.com www.hogehoge.com
# 必要なサブドメインはすべて書く。ワイルドカードも使えるらしいが怖くてテストしてない。
# 最初に書いたドメインでディレクトリが作られる。

# ./dehydrated --register --accept-terms
# ./dehydrated -c --accept-terms

# 最初の1回だけアカウントが作られる。
# domain.txt に書かれたドメインの証明書を取ってくる。
# 更新の都合もあるので、domain.txt にはすべてのドメインを書いておく。
# 更新の必要がなければ、スキップされる。

$ vim /etc/apache2/sites-available/default-ssl

<IfModule mod_ssl.c>
NameVirtualhost *:443
<VirtualHost *:443>
ServerName hogehoge.com
ServerAlias www.hogehoge.com
DocumentRoot /www/wp/
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/ssl_access.log combined
SSLEngine on
SSLCertificateFile /hoge/dehydrated-0.6.2/certs/hogehoge.com/fullchain.pem
SSLCertificateKeyFile /hoge/dehydrated-0.6.2/certs/hogehoge.com/privkey.pem
SSLCertificateChainFile /hoge/dehydrated-0.6.2/certs/hogehoge.com/chain.pem
</VirtualHost>
# apache のバーチャルホストの書き方。

$ vim /www/wp/.htaccess

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^.*/index.(html|php)
RewriteRule ^(.*)index.(html|php)$ http://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(www\.|ww2\.|wp\.)?hogehoge\.com$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# http を https へリダイレクト。

$ service apache2 restart

# apache をリスタート。

毎月1日と15日に更新チェック
$ crontab -e

0 3 1,15 * * /root/dehydrated-0.6.2/dehydrated –config /root/dehydrated-0.6.2/config –cron >> /tmp/ssl-update.log 2>&1