リモートアクセスVPNゲートウェイ:Easy-RSAを使った自己署名証明書作成手順(Linux)
LinuxOSにおいて、Easy-RSAを使って自己署名証明書を作成する手順です。
構成
リモートアクセスVPNゲートウェイに設定する各種証明書をEasy-RSAで作成します。
本ドキュメントはニフクラ上で作成したUbuntu 22.04 を利用した手順になります。
手順環境
バージョン | |
---|---|
Ubuntu | 22.04 |
Easy-RSA | 3.0.8 |
OpenSSL | 3.0.2 |
注意事項
- 本手順ではサーバー証明書およびクライアント証明書を同一の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 "sample 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証明書の作成
各種設定に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) [sample Private CA]: <== 組織を入力(Enterキー入力) Organizational Unit Name (eg, section) []: <== 部門を入力(Enterキー入力) Common Name (eg: your user, host, or server name) [Easy-RSA CA]:sample.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
以下のファイルが存在するか確認する
CA証明書 /root/cert/pki/ca.crt
サーバー証明書の作成方法
作成手順
サーバー証明書署名要求の作成
各種設定に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) [sample Private CA]: <== 組織を入力(Enterキー入力) Organizational Unit Name (eg, section) []: <== 部門を入力(Enterキー入力) Common Name (eg: your user, host, or server name) [server]:server.sample.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.sample 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.sample You may now use this name to perform signing operations on this request.
サーバー証明書の署名
# ./easyrsa sign-req server server.sample 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 = SAMPLE Private CA commonName = server.sample.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.sample.crt
以下のファイルが存在するか確認する
サーバー証明書 /root/cert/pki/issued/server.sample.crt サーバー証明書の秘密鍵 /root/cert/pki/private/server.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) [SAMPLE Private CA]: <== 組織を入力(Enterキー入力) Organizational Unit Name (eg, section) []: <== 部門を入力(Enterキー入力) Common Name (eg: your user, host, or server name) [client]:client.sample.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.sample 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.sample You may now use this name to perform signing operations on this request.
クライアント証明書の署名
# ./easyrsa sign-req client client.sample 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 = SAMPLE Private CA commonName = client.sample.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.sample.crt
以下のファイルが存在するか確認する
クライアント証明書 /root/cert/pki/issued/client.sample.crt クライアント証明書の秘密鍵 /root/cert/pki/private/client.key
確認手順
証明書の確認手順
証明書(crtファイル)は以下のコマンドで確認します。
openssl x509 -in <crtファイル>`
# openssl x509 -in /root/cert/pki/issued/client.sample.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.sample.crtをアップロードしエラーになったら、確認手順で表示された-----BEGIN xxx-----
から-----END xxx-----
までをコピーしてテキストボックスへ張り付けてください。
アップロード時に、以下を確認してください。
-----BEGIN xxx-----
と-----END xxx-----
の組み合わせが1つだけであること- 証明書や証明書署名要求、秘密鍵など異なる種類の
BEGIN
やEND
が連結されていないこと
フィードバック
サービス利用中のトラブルは、ニフクラサポート窓口にお願いします。
お役に立ちましたか?