サーバがcentos8, クライアントがWindows10で、static keyで接続できた。
その時のクライアント側configをiPhoneにメールで転送してopenvpnアプリに追加して接続しようとすると、 CA not defined というエラーになって接続できない。
このあたりはOSの種類やバージョンによって変わってくることは、違うvpnを設定した時にもあったことだ。 apple製品はこの辺がwindowsより厳しくなっている。
まあ最初から証明書は作るつもりだったので。
証明書はopensslでやる。
サーバの秘密鍵を作る→csr作成→caで署名
ここは何度もやったので省略
opensslの設定はほぼデフォルト
configはサンプルをコピーして作る。configの置き場は /etc/openvpn/server/
# cp /usr/share/doc/openvpn/sample/sample-config-files/server.conf /etc/openvpn/server/
なるべくデフォルト設定を使う。
以下のファイルが必要
ca ca.crt #VPNサーバの証明書を発行(署名)するCAの証明書 cert server.crt #VPNサーバの証明書 key server.key #VPNサーバの秘密鍵 # openssl dhparam -out dh2048.pem 2048 dh dh2048.pem # DHパラメータ # openvpn --genkey --secret ta.key # # The server and each client must have # a copy of this key. # The second parameter should be '0' # on the server and '1' on the clients. tls-auth ta.key 0 # This file is secret # tlsキー、後ろの数字は0がサーバー、1がクライアント
dhパラメータをeasyrsaで作るように説明している情報が多いがsampleコンフィグにopensslのコマンドが書いてあるのでそれを使う。
ごちゃごちゃやったが結局つながったので、configを載せておく。 サーバ証明書とクライアント証明書での接続
サーバ(コメント部分削除)port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key dh dh2048.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "route 192.168.55.0 255.255.255.0" keepalive 10 120 tls-auth ta.key 0 persist-key persist-tun status openvpn-status.log log-append openvpn.log verb 4 explicit-exit-notify 1
外部ファイル(server.confと同じフォルダ /etc/openvpn/server に置く)
ca.crt
server.crt
server.key
dh2048.pem
pushは接続先のプライベートネットワークセグメント(アクセス先)
加えてサーバ側のfirewalld設定やip forwardingの設定が必要(前回の記事を参照)
ログ出力設定はデフォルトで無効だが有効にした
client remote vpn.example.com port 1194 proto udp dev tun tls-auth ta.key 1 persist-tun persist-key verb 4 mute 10 < ca > -----BEGIN CERTIFICATE----- (省略、サーバ証明書にサインしたCAの証明書) -----END CERTIFICATE----- < /ca > < cert > -----BEGIN CERTIFICATE----- (省略、クライアント証明書) -----END CERTIFICATE----- < /cert > < key > -----BEGIN RSA PRIVATE KEY----- (省略、クライアントの秘密鍵) -----END RSA PRIVATE KEY----- < /key >
外部ファイル
ta.key
client が必要
クライアント(iPhone 15.2.1, Mac Monterey Version12.2)client remote www.monqy.net port 1194 proto udp dev tun persist-tun persist-key verb 4 mute 10 key-direction 1 < ca > -----BEGIN CERTIFICATE----- (省略、サーバ証明書にサインしたCAの証明書) -----END CERTIFICATE----- < /ca > < cert > -----BEGIN CERTIFICATE----- (省略、クライアント証明書) -----END CERTIFICATE----- < /cert > < key > -----BEGIN RSA PRIVATE KEY----- (省略、クライアントの秘密鍵) -----END RSA PRIVATE KEY----- < /key > < tls-auth > -----BEGIN OpenVPN Static key V1----- (省略、ta.keyの中身) -----END OpenVPN Static key V1----- < /tls-auth >ポイントは、 tls-auth ta.key 1 と書くところは ta.keyの内容を< tls-auth >に貼り付けて、
key-direction 1 (client側を意味する) を書く。