#author("2024-06-22T00:27:31+00:00","default:wikiadmin","wikiadmin") #author("2024-06-22T00:30:34+00:00","default:wikiadmin","wikiadmin") -認証局(オレオレCA)の作成と証明書の発行を楽にできるOpenVPNのサブツール #contents *使い方 [#fc3881a9] *用語 [#eddf38c1] PKIの一般用語も含む |CA|認証局| |証明書認証|認証局立ててサーバー証明書とクライアント証明書を発行して認証。証明書の管理(紛失時は失効&再発行)や更新が面倒| |ID&PW認証|LDAPなどの外部システムと連携して認証を行う| *初期化と認証局立てる [#e6ecc8f7] git clone https://github.com/OpenVPN/easy-rsa.git cd easy-rsa/easyrsa3 -100年有効のCAを作成。easy-rsa/varsはコメント除いて以下だけで良い。 if [ -z "$EASYRSA_CALLER" ]; then echo "You appear to be sourcing an Easy-RSA *vars* file. This is" >&2 echo "no longer necessary and is disallowed. See the section called" >&2 echo "*How to use this file* near the top comments for more details." >&2 return 1 fi set_var EASYRSA_CA_EXPIRE 36500 set_var EASYRSA_CERT_EXPIRE 36500 set_var EASYRSA_CRL_DAYS 36500 ./easyrsa init-pki ./easyrsa build-ca build-caしたときにCA名称をつける。CAパスフレーズを設定しておくと以下のコマンド実行時に要求される。 -CA内容の確認 ./easyrsa show-ca **証明書発行 [#b7e7fe75] 認証局にドメイン名をいれるけど、発行するのは別ドメインなのでここのドメイン名は適当で良い。 (本来のCAの役割であればその組織のドメインを入れるべきだが) ./easyrsa build-server-full CA-NAME nopass # show ./easyrsa show-cert CA-NAME ./easyrsa build-client-full user1 nopass **更新 [#e28a14ff] ./easyrsa renew server1 nopass *作成ファイル [#hc9de3a4] -pki以下 ca.crt private/ca.key *Apacheで自己証明書を使う。 [#y5c256ef] -Nginxだとそのまま使えたけど、Apacheだとエラーになる状況で調査中 -秘密鍵とCSRの作成 ./easyrsa --subject-alt-name='DNS:*.rutake.com,DNS:rutake.com' gen-req rutake.com nopass -証明書の発行 *nginx向け証明書作成 [#l4eab125] -crtに鍵以外の情報が入っているけど、そのまま使える。Apacheだと現在エラーとなる ./easyrsa --subject-alt-name='DNS:*.example.com,DNS:example.com' gen-req example.com nopass ./easyrsa --subject-alt-name='DNS:*.example.com,DNS:example.com' sign-req server example.com *CentOS7にインストール [#j76c6000] https://www.server-world.info/query?os=CentOS_7&p=openvpn **ポート開放 [#nca4d367] <rule family="ipv4"> <source address="許可したいIP/32"/> <port protocol="udp" port="1194"/> <accept/> </rule> **トラブル [#u3514ab3] ***ネットにつながらない [#b88b5d5c] -デフォルトだとネット接続はVPN経由しないらしいのだが! -つながるサイトとつながらないサイトがある。自宅サイト/GoogleMap/Qiitaなどは平気だが行けないところが多い。ERR_ADDRESS_UNREACHABLE -VPN経由にして、IPマスカレード有効にしてもだめ *実験 [#cf551ca3] **クライアント証明書 [#l89f2da1] -CAが一緒なら別の証明書でも接続できた。 **証明書更新 [#u6ea2315] -サーバー側だけ更新したときにクライアント証明書は期限まで有効であること(keyも合わせて更新する必要がある!!) *接続後に通知(うまく行かない) [#vfd4a401] https://blog.ymyzk.com/2016/10/openvpn-slack-notification/ *AWS VPN Client [#gf942083] -Subnetに紐づけている時間から課金発生。 -2022年ぐらいにOpenVPN系の更新タスクがあり、そのときに作成したもののすっかり忘れた。 **構築 [#tad29850] -ターゲットネットワークの結びつけに15分ぐらいかかったような。 -証明書の切り替えは一瞬 **接続 [#o48e9135] Ubuntu標準のやつだとだめだった。ovpnファイルを読み込める専用クライアントなら難なく成功。サーバー証明書とクライアント証明書は同一を指定 |クライアント|サーバー|結果| |期限2年|期限2年|○| |期限2年|更新後期限10年|○| |更新後期限10年|更新後期限10年|○| |更新後期限10年|期限2年|○|