リモートアクセスVPNゲートウェイ:Easy-RSAを使った自己署名証明書作成手順
Easy-RSAを使った、自己署名証明書の作成手順です。
構成
リモートアクセスVPNゲートウェイに設定する各種証明書をEasy-RSAで作成します。
本ドキュメントはニフクラ上で作成したUbuntu 22.04 を利用した手順になります。
手順環境
バージョン | |
---|---|
Ubuntu | 22.04 |
Easy-RSA | 3.0.8 |
OpenSSL | 3.0.2 |
注意事項
- 本手順では、事前準備→CA証明書の作成→サーバー証明書の作成→クライアント証明書の作成の順番に実施していくことを想定しております。
サーバー証明書およびクライアント証明書の署名の際にCA証明書が必要になりますので本手順に沿って順番通り実施してください。 - 本手順ではサーバー証明書およびクライアント証明書を同一のCA証明書にて署名しています。
サーバー証明書とクライアント証明書で別のCA証明書で署名したい場合には、作業ディレクトリをわけて実施してください。
事前準備
Easy-RSAのインストール
# apt-get -y install easy-rsa Reading package lists... Done Building dependency tree... Done ... # ls -l /usr/share/easy-rsa/ -rwxr-xr-x 1 root root 76923 Nov 19 2021 easyrsa -rw-r--r-- 1 root root 4616 Sep 10 2020 openssl-easyrsa.cnf -rw-r--r-- 1 root root 8925 Sep 10 2020 vars.example drwxr-xr-x 2 root root 4096 Mar 30 11:47 x509-types
作成環境の準備
# mkdir /root/cert # cd /root/cert # ln -s /usr/share/easy-rsa/easyrsa # ln -s /usr/share/easy-rsa/openssl-easyrsa.cnf # ln -s /usr/share/easy-rsa/vars.example # ln -s /usr/share/easy-rsa/x509-types # ls -l lrwxrwxrwx 1 root root 27 Mar 30 11:56 easyrsa -> /usr/share/easy-rsa/easyrsa lrwxrwxrwx 1 root root 39 Mar 30 11:56 openssl-easyrsa.cnf -> /usr/share/easy-rsa/openssl-easyrsa.cnf lrwxrwxrwx 1 root root 32 Mar 30 11:56 vars.example -> /usr/share/easy-rsa/vars.example lrwxrwxrwx 1 root root 30 Mar 30 11:56 x509-types -> /usr/share/easy-rsa/x509-types # export EASYRSA_VARS_FILE="/root/cert/vars"
各種設定
各種設定ファイル「vars」を作成します。設定値はサンプルです。お客様環境に合わせて設定してください。
set_var EASYRSA_DN "org" set_var EASYRSA_REQ_COUNTRY "JP" set_var EASYRSA_REQ_PROVINCE "Kanagawa" set_var EASYRSA_REQ_CITY "kawasaki" set_var EASYRSA_REQ_ORG "NIFCLOUD Private CA" set_var EASYRSA_REQ_EMAIL "" set_var EASYRSA_REQ_OU "" set_var EASYRSA_CA_EXPIRE 3650 set_var EASYRSA_CERT_EXPIRE 3650 set_var EASYRSA_DIGEST "sha512"
※EASYRSA_DIGESTには
sha256, sha224, sha384, sha512
のいずれかを指定してください。pkiの初期化
# ./easyrsa init-pki Note: using Easy-RSA configuration from: /root/cert/vars init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /root/cert/pki
CA証明書の作成方法
作成するファイル
CA証明書 | /root/cert/pki/ca.crt |
作成手順
CA証明書の作成
各種設定にvarsに設定した値がデフォルトとして設定されています。 Common Nameのみ手動で入力してください。
# ./easyrsa build-ca nopass Note: using Easy-RSA configuration from: /root/cert/vars ... ----- Country Name (2 letter code) [JP]: <== 国を指定(Enterキー入力) State or Province Name (full name) [Kanagawa]: <== 都道府県を指定(Enterキー入力) Locality Name (eg, city) [kawasaki]: <== 市区町村を入力(Enterキー入力) Organization Name (eg, company) [NIFCLOUD Private CA]: <== 組織を入力(Enterキー入力) Organizational Unit Name (eg, section) []: <== 部門を入力(Enterキー入力) Common Name (eg: your user, host, or server name) [Easy-RSA CA]:nifcloud.local <== コモンネームを入力 Email Address []: <== E-Mail アドレスを入力(Enterキー入力) CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /root/cert/pki/ca.crt
サーバー証明書の作成方法
作成するファイル
サーバー証明書 | /root/cert/pki/issued/server.nifcloud.crt |
サーバー証明書の秘密鍵 | /root/cert/pki/private/server.key |
作成手順
サーバー証明書署名要求の作成
各種設定にvarsに設定した値がデフォルトとして設定されています。 Common Nameのみ手動で入力してください。
# ./easyrsa gen-req server nopass Note: using Easy-RSA configuration from: /root/cert/vars Using SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022) ... ----- Country Name (2 letter code) [JP]: <== 国を指定(Enterキー入力) State or Province Name (full name) [Kanagawa]: <== 都道府県を指定(Enterキー入力) Locality Name (eg, city) [kawasaki]: <== 市区町村を入力(Enterキー入力) Organization Name (eg, company) [NIFCLOUD Private CA]: <== 組織を入力(Enterキー入力) Organizational Unit Name (eg, section) []: <== 部門を入力(Enterキー入力) Common Name (eg: your user, host, or server name) [server]:server.nifcloud.local <== コモンネームを入力 Email Address []: <== E-Mail アドレスを入力(Enterキー入力) Keypair and certificate request completed. Your files are: req: /root/cert/pki/reqs/server.req key: /root/cert/pki/private/server.key
サーバー証明書署名要求のインポート
# ./easyrsa import-req pki/reqs/server.req server.nifcloud Note: using Easy-RSA configuration from: /root/cert/vars Using SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022) The request has been successfully imported with a short name of: server.nifcloud You may now use this name to perform signing operations on this request.
サーバー証明書の署名
# ./easyrsa sign-req server server.nifcloud Note: using Easy-RSA configuration from: /root/cert/vars Using SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022) ... Request subject, to be signed as a server certificate for 3650 days: subject= countryName = JP stateOrProvinceName = Kanagawa localityName = kawasaki organizationName = NIFCLOUD Private CA commonName = server.nifcloud.local Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes <== yesと入力 ... Write out database with 1 new entries Data Base Updated Certificate created at: /root/cert/pki/issued/server.nifcloud.crt
クライアント証明書の作成方法
作成するファイル
クライアント証明書 | /root/cert/pki/issued/client.nifcloud.crt |
クライアント証明書の秘密鍵 | /root/cert/pki/private/client.key |
作成手順
クライアント証明書署名要求の作成
各種設定にvarsに設定した値がデフォルトとして設定されています。 Common Nameのみ手動で入力してください。
# ./easyrsa gen-req client nopass Note: using Easy-RSA configuration from: /root/cert/vars Using SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022) ... ----- Country Name (2 letter code) [JP]: <== 国を指定(Enterキー入力) State or Province Name (full name) [Kanagawa]: <== 都道府県を指定(Enterキー入力) Locality Name (eg, city) [kawasaki]: <== 市区町村を入力(Enterキー入力) Organization Name (eg, company) [NIFCLOUD Private CA]: <== 組織を入力(Enterキー入力) Organizational Unit Name (eg, section) []: <== 部門を入力(Enterキー入力) Common Name (eg: your user, host, or server name) [client]:client.nifcloud.local <== コモンネームを入力 Email Address []: <== E-Mail アドレスを入力(Enterキー入力) Keypair and certificate request completed. Your files are: req: /root/cert/pki/reqs/client.req key: /root/cert/pki/private/client.key
クライアント証明書署名要求のインポート
# ./easyrsa import-req pki/reqs/client.req client.nifcloud Note: using Easy-RSA configuration from: /root/cert/vars Using SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022) The request has been successfully imported with a short name of: client.nifcloud You may now use this name to perform signing operations on this request.
クライアント証明書の署名
# ./easyrsa sign-req client client.nifcloud Note: using Easy-RSA configuration from: /root/cert/vars Using SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022) ... Request subject, to be signed as a client certificate for 3650 days: subject= countryName = JP stateOrProvinceName = Kanagawa localityName = kawasaki organizationName = NIFCLOUD Private CA commonName = client.nifcloud.local Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes <== yesと入力 ... Write out database with 1 new entries Data Base Updated Certificate created at: /root/cert/pki/issued/client.nifcloud.crt
確認手順
証明書の確認手順
証明書(crtファイル)は以下のコマンドで確認します。
openssl x509 -in <crtファイル>
# openssl x509 -in /root/cert/pki/issued/client.nifcloud.crt
-----BEGIN CERTIFICATE-----
xxxxx...
...........................
...xxxxxx
-----END CERTIFICATE-----
秘密鍵の確認手順
秘密鍵(keyファイル)は以下のコマンドで確認します。
cat <keyファイル>
# cat /root/cert/pki/private/server.key
-----BEGIN PRIVATE KEY-----
xxxxx...
...........................
...xxxxxx
-----END PRIVATE KEY-----
証明書アップロード
表示された証明書や秘密鍵をコントロールパネルからアップロードし、証明書の一覧に表示される事を確認します。
※client.nifcloud.crtをそのままアップロードした場合はエラーになるため、上記のコマンドで表示された内容をアップロードしてください。
アップロード時に、以下を確認してください。
・ -----BEGIN xxx-----
で始まり、-----END xxx-----
で終わっていること
・ 証明書や証明書署名要求、秘密鍵など異なる種類のBEGIN
やEND
が連結されていないこと
クラウド操作方法ガイド(SSL証明書:サーバー証明書:アップロード)
クラウド操作方法ガイド(SSL証明書:CA証明書:アップロード)