I love the frozen FOOD.
SSL証明書は、結構な運用経費がかかるもの。
かといって、「オレオレ証明書」では運用できない。
今回は、手数料無料でSSL証明書を発行できる Let’s Encrypt を使ってみる。
非営利団体のISRGが運営しておる証明書関連プロジェクト。
非営利だけあって証明書発行なども無料。商用もOKだそうな。
この団体のスポンサーは、シスコやモジラ財団なども入っており、いわゆる大手企業・大手団体がサポートしている感じだそうな。
証明書を設定するためには、最低限、下記の環境(条件)が必要。
2016.4.13現在、証明書の有効期間は90日間。
60か月程度で更新する必要あり。
主要ブラウザでhttps使えます。スマフォでもいけました。
IEだの、chorome,firefoz,safariなどなど。
一般ユーザでsshでサーバにログインした後、letsencryptツールをダウンロードする。
※証明書を取得するツール
git clone https://github.com/letsencrypt/letsencrypt
当該ツールで必要な環境を作ってくれるコマンドを実行する。
cd letsencrypt/
./letsencrypt-auto –help
Phythonなどインストールされていない環境の場合は、勝手にすべてインストールされます。
尚、このコマンド実行時に sudo が使われているようですが、こととき、
sudoers ファイル内にありません。この事象は記録・報告されます。
というエラーがある場合、下記にしたがい sudo 環境を作ってくだされ。
su –
visudo
viでsudoの設定ファイルが開く。このファイルの中に
Allows people in group wheel to run all commands
#%wheel ALL=(ALL) ALL
となっている行があるので、 #wheel の # を外してください(コメントを外す)。
次に、先ほどsshでログインしたユーザID(ここでは仮にtestとします)に、グループ権限を等を追加。
usermod -G wheel test
この状態で、
su – test
としてあげれば、test ユーザにて sudo が実行可能。
環境が出来たので実際に証明書を取得する。
たとえば、私のサイト www.nemuizo.com を取得する場合は、下記のようにコマンドを実行する。
./letsencrypt-auto certonly -a standalone -d gem-one.jp -d inquiry.gem-one.jp
ブルーバックになり、
などきかれる。素直に入力しよう。
尚、ここでエラーが出てくる場合がある。
2パターンあるので個別に紹介。
The program httpd (process ID 30656) is already listening on TCP port 80.
This will prevent us from binding to that port.
Please stop the httpd program temporarily and then try again.
的なエラーが出る場合がある。
letsencryptツールは、実行時にhttpポート(80)を使うので、当該ポートですでにwebサーバなどが立ち上がっている場合、エラーとなる。
この場合は、素直に一度Webサーバを停止させておこう。
ルートで apache をストップする場合はこんな感じ。
/etc/rc.d/init.d/http stop
尚、letsencryptツールが終了したら、Webサーバを立ち上げておくことを忘れずに。
この後、再度、「./letsencrypt-auto certonly~」のコマンドを実行すればよい。
証明書の取得に失敗する場合は、マニュアルモードで実行するとよい。
./letsencrypt-auto certonly -a standalone -d gem-one.jp -d inquiry.gem-one.jp -a manual
ブルーバックの状態から、急に
If you don’t have HTTP server configured, you can run the following
command on the target server (as root):mkdir -p /tmp/letsencrypt/public_html/.well-known/acme-challenge
cd /tmp/letsencrypt/public_html
printf “%s” xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxx > .well-known/acme-challenge/xxxxxxxxxxxxxxxxxxxxxxxx
# run only once per server:
$(command -v python2 || command -v python2.7 || command -v python2.6) -c \
“import BaseHTTPServer, SimpleHTTPServer; \
s = BaseHTTPServer.HTTPServer((”, 80), SimpleHTTPServer.SimpleHTTPRequestHandler); \
s.serve_forever()”
Press ENTER to continue
というメッセージが出る場合は、他のシェルを立ち上げ、root権限にてmkdir コマンド以降を順次実行しよう。
尚、最後の 「$(command -v 」で始まるコマンドは、常駐コマンドのため入力が復帰しないのに注意。
最後のコマンドを実行して10秒程度待ったら、先ほどのシェル(Press ENTER to continueが出ている方のシェル)に戻り、リターンキーを押す。
うまくいけば、
IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/inquiry.gem-one.jp/fullchain.pem. Your cert
will expire on 2016-07-12. To obtain a new version of the
certificate in the future, simply run Let’s Encrypt again.
が出てきて、めでたく証明書発行の終了。
Letsencryptの情報は、
/etc/letsencrypt/
に格納されてる
証明書 :/etc/letsencrypt/live
証明書本体:/etc/letsencrypt/archive
尚、「証明書」は「証明書本体」にある「本体」のシンボリックリンク。「本体」は証明書の有効期限が過ぎしだい、随時アップデートされるが、シンボリックリンク先は不変。
したがってapacheなどの設定にて証明書を使う場合は、「証明書」のディレクトリにある証明書を使えばいい。
尚、上記ディレクトリ直下に発行対象のドメインディレクトリがあり、その直下に下記のファイルがある。
conf.d/vhost.conf などで、 virtual hostの設定を。
Gem-one(ジェムワン) 権蔵
Gem-one代表.システム開発業ブランドGem-one adIT、音楽レッスン事業 Gem-one Music設立。ビリヤード・スケジュールサイト すけどんも絶賛運用中。
■ブログ
ちょろっとお時間頂戴