rt2600acでクライント側秘密鍵と証明書を個別にする方法の検討

 以前の投稿でrt2600acでは、クライアント側秘密鍵と証明書がすべて共通になっている問題についてかきました。
RT2600acのOpenVPNクライアント証明者と秘密鍵について

 しかし、 SSH接続で無理やり設定ファイルを置き換え、証明書も自前で用意すれば分けることができそうなので覚書を残します。

 SSH接続の仕方と、設定ファイルを置き換える注意点については以前の記事で記述しました。
RT2600acでtls-cryptを使用してみる

 RT2600acのca.keyは取り出せないため、自前で必要な証明書等を作成します。

サーバー側
・ca.crt
・server.crt
・server.key
・crl.pem
・tls-crypt.key
・crl.pem

クライアント側
・ca.crt
・client-01.crt
・client-01.key
・tls-crypt.key

ファイルの依存関係は以下となり、ca.keyにすべての証明書が依存しています。
ca.crt <- ca.key
server.crt <- server.key & ca.key
client.crt <- client.key & ca.key

生成はEasy-RSAで実施します。MSYSではエラー処理があり、WSLを使用するとスムーズでした。
git clone https://github.com/OpenVPN/easy-rsa.git 
cd easy-rsa/easyrsa3
./easyrsa init-pki
./easyrsa build-ca #ca 証明者とキー作成 パスフレーズは証明書作成、失効リスト追加時のみ使用、common nameは何でもよい
./easyrsa build-server-full server nopass #サーバー証明者作成と秘密鍵作成
./easyrsa build-client-full client-smartphone nopass #クライアント証明書と秘密鍵を必要なだけ作成
./easyrsa build-client-full client-tablet nopass #クライアント証明書と秘密鍵を必要なだけ作成

これで必要な証明書は揃いました。次に失効リストを作成します。

./easyrsa gen-crl 

client-smarphone.crtとkeyをいれたスマホを紛失した場合などは次のように失効リストに追加します。

./easyrsa revoke client-smartphone
./easyrsa gen-crl

そのときはtls-crypt.keyもセットで紛失しているはずなので、再生成して各クライアントに配り直す必要があります。

tls-crypt.keyはEasyRSAではなくopenvpnで生成します。

openvpn --genkey --secret tls-crypt.key

後はこれらのファイルをRT2600acにコピーして、設定ファイルを編集

#この辺パスを自分で生成したファイルに置き換える
ca /var/packages/VPNPlusServer/target/etc/openvpn/keys/ca.crt
cert /var/packages/VPNPlusServer/target/etc/openvpn/keys/server.crt
key /var/packages/VPNPlusServer/target/etc/openvpn/keys/server.key
tls-crypt /var/packages/VPNPlusServer/target/etc/openvpn/keys/ta.key
#以下追加
verify-client-cert require #クライントがクライント用途の証明書をもっているか確認する
remote-cert-eku "TLS Web Client Authentication" #
crl-verify crl.pem #失効リストチェック

クライアント側のovpnファイルも<ca>と<tls-crypt>の中身を生成したものに置き換え、クライアント側の証明書と秘密鍵を追記します。

<cert>
-----BEGIN CERTIFICATE-----
 (client-XXX.crt の中身)
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
(client-XXX.key の中身)
-----END PRIVATE K
</key>

これで多分秘密鍵を分けられるようになるはずですが、自分の環境ではテストしていません。というのも、端末を紛失した場合はtls-cryptを全端末で再設定することには変わりがないので手間として端末毎に証明書を分けても変わらないと思ったからです。企業であれば特定の端末の証明書のみ失効で他の端末は取りあえずは使い続けて業務を止めずに済む点は重要でしょうが、個人の場合rt2600acでそこまで気にしてもしかたないかな

Pocket

コメントを残す

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