freenom+Cloudflare+Synology NASでhttps 独自ドメイン運用 (Let’s Encrypt ワイルドカードSSL対応)

Synology NAS 無料独自ドメインをワイルドカードで運用する

個人ブログであっても常時SSL(https)サイトは当たり前になってきていて

たとえ自分一人しか使っていないNASであってもSSL対応にしておかないと
ブラウザに容赦なく「このサイトへの接続は保護されていません」と表示されてしまいます。

これは時代の流れなので逆らうことなく乗っちゃいましょう。

Synology NASでは標準でSSL証明書の無料取得に対応していて、しかも簡単にできます。

SynologyのDSM(OSのようなもの)が正式にワイルドカードSSL証明書発行に対応していないので、
まだxxx.synology.me、yyy.myds.meなどのSynologyのDDNSではワイルドカードの証明書は入手はできないようです。

サブドメイン(xyz.xxx.synology.meなど)を含めた証明書は作れますが、発行の際に個別にエイリアス(別名)を設定する必要があるのでサブドメインはそこで指定したものでしかSSL証明書は使えませんでした。(多くても10個くらいまで)

2018年1月からLet’s Encryptの仕様変更(ACMEv2)によりワイルドカードのSSL証明書を手に入れることができるようになりました。無料ですが3ヶ月ごとに更新が必要です。

このことによって

https://mydomain.com

でしかSSLが適用されなかったものが

https://xxx.mydomain.com
https://xyzxyz.mydomain.com
https://f84a0wg34k.mydomain.com

といった、サブドメインに関しても保護された認証としてSSL接続することができます。

余談ながら、Synology社が出している無線LANルータRT2600acでWebVPNという独自のVPNがあるのですが、ワイルドカードSSL証明書があるとだいぶ便利になります。

どうせワイルドカードになるならドメイン名は短いほうがよいので 新たにドメインを取得し、NASでの運用に使用します。

この記事はDSMの更新でLet’s EncryptのACMEv2、つまりワイルドカードSSL発行に 対応するまでの一時しのぎです。

取得方法はいくつかありますが、本記事では以下のようにします。

    • Freenomで独自ドメイン取得
    • CloudFlare登録、管理
    • Synology NAS SSHでスクリプトを実行、SSL証明書取得

freenom登録

まずは、好きなドメインを取得します。

以下の5種類のドメインから選べます。 メジャーなドメイン(TLD)ではないですが、小規模で使うなら何の問題ないと思います。

.tk
.ml
.ga
.cf
.gq

取得したドメインは、12ヶ月無料です

更新15日前までに更新すれば使い続けることができます。
ただ、二年目以降は有料なので、新しくドメイン取得してもいいと思います。

こちらからfreenomにアクセス

http://www.freenom.com/en/index.html

右上のEnglishをクリックして日本語表示を選択することもできます。

検索欄に、ほしいドメイン名(ドット以下は不要)を入力して 右の青い丸を押すと 現在入手可能なドメインが表示されます。

ドメイン名にもよりますが、4文字から無料みたいですね。 1文字だと2500ドルです。

そのドメインでよければ右の青いラベルで選択して購入画面に進みます。

ドメインの設定はあとにして、 右の「Period」で「[email protected]」を選択。
購入画面になりますが、「$0.00USD」なので無料です。

左下の欄に自分のメールアドレスを入力して認証します。

届いたメールのURLをクリックして認証完了です。(24時間以内)

プロフィール情報を入力する画面になるので適当に入力します。
Company Name以外は入力が必要のようです。

これで登録が完了しました。

あとは、設定したメールアドレスとパスワードでログイン

MyDomains」を選んで管理画面へ 自分のドメインを確認します。

次は、このドメインをCloudflareに登録してDNSレコードの設定をします。

Cloudflareに登録

MEMO

ネームサーバーをFreenomのままにする場合は

この行程は飛ばしてもOKです。DNSレコードはCloudflareと同じように設定してください。

 

正直NASでCloudflare (CDN)を使用するメリットは少ないですが

  • 攻撃的なトラフィックを除去
  • キャッシュによるアクセスの高速化

などの効果が期待できます。

Cloudflareは下記から登録します。

https://dash.cloudflare.com/sign-up

メールアドレスと任意のパスワードを設定。

先程取得したドメイン名を入力します。確認に少し時間がかかります。

一番左の「FREE」を選択。

DNSレコードの取得に失敗しますが、気にせず一番下の「Continue」を押します。

ユーザーによってネームサーバーは違うので表示された通りに、
Freenomのネームサーバーの設定を Cloudflareに向けるよう設定します。

この場合だと、

ns01.freenom.com → mia.ns.cloudflare.com
ns02.freenom.com → tom.ns.cloudflare.com

にします。



ネームサーバーをCloudflareに向ける

一度Freenomの管理ページへ戻ります。

「MyDomains」からドメインを選んで「Manage Dmain」を選択

「Management Tools」、「Nameservers」を選びます。

Use custom nameservers」を選択して先程のCloudflareのネームサーバーを入力

「Change Nameservers」で登録完了です。

 

またCloudflareに戻り、ネームサーバーの再チェックを行います。

「Recheck Nameservers」を選択。

適切にネームサーバーが設定されていると、ステータスがActiveに変わります。

あとは上のメニューから「DNS」を選択してDNSレコードを設定していきます。

画像のように3つ設定しておけばOKです。

Aレコードの「IPv4 address」には自分のNASのIPアドレスを入力します。

一番上のワイルドカード( *の部分)を設定するときに、
オレンジの雲(CDSがオン)が有効になっていると登録に失敗するようなので注意します。

これでDNSの設定は完了です。

数時間〜1日経つと、DNSレコードが世界中のサーバに浸透していきます。
私の場合、アクセスできるまで3時間ほどかかりました。

スマホなど(外部アクセス)から 取得したドメインにアクセスしてみて、表示されればOKです。(WebStationのインストールが必要)

1日経ってもアクセスできない場合はポート開放がされているかもう一度ルータの設定を確認しましょう。

NASでLet’s encrypt実行

HOW TO GUIDE TO GET LETS ENCRYPT WILDCARD CERTIFICATE

を参考にしています。

NASのDSMを開いて「コントロールパネル「」、「端末とSNMP」「ターミナル」で

SSHサービスを有効化しておきます。

ターミナルなどでSSHログイン

 

sudo ssh -p 22 [email protected]

sudo -i

 

管理者パスワードを入力でroot

rootのホームディレクトリで作業するので移動

cd /root

Let’s Encrypt の証明書取得のためのスクリプトをダウンロードと実行権限の付与

wget https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh
chmod a+x acme.sh

以下でスクリプトをマニュアルモードで実行します。

sampledomain.tk を自分のドメイン名に変えてください。

issue 証明書発行コマンド

SSH
./acme.sh --force --issue -d *.sampledomain.tk -d sampledomain.tk --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please

 

SSL証明書の取得に失敗しますが問題ありません。

TXTレコードをDNSレコードに追加してください」 という表示がされますのでメモします。2つありますので、それぞれ必要です。

二重引用符などは不要なので文字列だけです。以下は例

_acme-challenge.sampledomain.tk

nwOVAvrTTB4Kv4mWacYW7j3iKKy007bw5LAVw4kfyKM

_acme-challenge.sampledomain.tk

cfq1EYtHQIh_pAh2ZPhwc9EDMf6ZrxFx11APVnSSA40

 

これをコピーして、CloudflareのDNSレコードに登録していきます。
TXTレコード
NAMEに _acme-challenge.sampledomain.tk
(下の画像には表示はされていませんが入力されています)

Valueに 文字列を引用符なしで文字列をペースト

登録後(5分くらい)少し待って、SSHで以下のコマンドを入力。

renew

SSH
./acme.sh --force --renew -d *.sampledomain.tk -d sampledomain.tk --yes-I-know-dns-manual-mode-enough-go-ahead-please

成功すると証明書が吐き出されます。

Your cert is in /root/.acme.sh/.sampledomain.tk/.sampledomain.tk.cer 
Your cert key is in /root/.acme.sh/.sampledomain.tk/.sampledomain.tk.key
The intermediate CA cert is in /root/.acme.sh/.sampledomain.tk/ca.cer
And the full chain certs is there: /root/.acme.sh/*.sampledomain.tk/fullchain.cer

/root/.acme.sh/ に保存されるので隠しフォルダに移動します。

cd /root/.acme.sh/*.sampledomain.tk

必要なのはこの3つのファイルです。

 *.sampledomain.tk.key  = private.pem  秘密キー
 fullchain.cer  = cert.pem       証明書
 ca.cer  = chain.pem    中間証明書

以上のように対応しているので3つファイルを適当なところにコピーして ダウンロードしましょう。
File Stationでアクセスできる場所にコピーするのが早いです。
ファイル名はもとのままでOKです。

cp *.sampledomain.tk.key ca.cer fullchain.cer /volume1/tmp (任意のディレクトリ)

 

File Stationを開いて、デスクトップにとりあえず証明書をダウンロードします。

DSMの「コントロールパネル」「セキュリティ」「証明書」を開いて

NASNASにダウンロードした証明書をインポートします。

ファイルを間違えていなければ、証明書が一覧に表示されます。

ワイルドカードの証明書は「*.sampledomain.com」となっているのですぐわかります。

証明書をデフォルトに設定して、「構成」からすべてのサービスをこの証明書に向けると設定が完了です。

これでワイルドカードのSSL証明書の導入ができました。 おつかれさまでした。

下の画像は./acme.shでSSL証明書取得したときの画像ですが、参考に載せます。

[aside type=”warning”]スクリプトのmanualモードを使っているので自動で更新はされません。[/aside]

メモ

WebsStation用仮想ホストごとのSSL証明書が保存されているディレクトリ

/usr/local/etc/certificate/WebStation

デフォルトに設定したSSL

/usr/syno/etc/certificate/system/default

その他SSL

/usr/syno/etc/certificate/_archive

自動でSSL更新、DDNS更新

先述のように自動でSSL証明書が更新されないのでCrontabを使います。

また、NASのIPアドレスが変更されると、アクセスできなくなってしまうので
自動でIPアドレスを更新する方法を次回の記事で紹介します。

自動更新の方法はこちら

CloudFlare DDNS をスクリプトで自動更新 Synology NAS Synology NASでワイルドカードSSLを自動更新する

追記

この記事で実際に取得したドメインはリリース済みなので今はアクセス出来ません。
誰も取得していなければですが…

必要あればボカシ入れます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です