Rocky Linux 9上で、EasyRSAを使用して証明書を作成します。
記事の目次
EasyRSAをインストールする!
EasyRSAをインストールします。
EasyRSAを使用する環境を確認する!
EasyRSAを使用する環境を確認します。
# hostnamectl Static hostname: vmsans01.loc.lab4ict.com Icon name: computer-vm Chassis: vm Machine ID: d7818b80129a422a853325243ce5eef3 Boot ID: 68c9a2eeb3b94c17a11ddec2ad58e995 Virtualization: oracle Operating System: Rocky Linux 9.1 (Blue Onyx) CPE OS Name: cpe:/o:rocky:rocky:9::baseos Kernel: Linux 5.14.0-162.6.1.el9_1.0.1.x86_64 Architecture: x86-64 Hardware Vendor: innotek GmbH Hardware Model: VirtualBox
EPELリポジトリを登録する!
EPELリポジトリを登録します。
# dnf install -y epel-release ... ======================================================================================================================== Package Architecture Version Repository Size ======================================================================================================================== Installing: epel-release noarch 9-4.el9 extras 19 k Transaction Summary ======================================================================================================================== Install 1 Package ... Complete! # dnf makecache ... Extra Packages for Enterprise Linux 9 - x86_64 ...
EasyRSAをインストールする!
EasyRSAをインストールします。
# dnf install -y easy-rsa ... ======================================================================================================================== Package Architecture Version Repository Size ======================================================================================================================== Installing: easy-rsa noarch 3.0.8-3.el9 epel 45 k Transaction Summary ======================================================================================================================== Install 1 Package ... Complete!
証明書作成する!
EasyRSAを使用して、証明書を作成します。
CA局を作成する!
CA局を作成します。基本となるディレクトリを作成して、ディレクトリを初期化します。
$ mkdir sample $ ln -s /usr/share/easy-rsa/3/* sample $ ls -l sample total 0 lrwxrwxrwx. 1 usradmin usradmin 29 Jul 15 17:57 easyrsa -> /usr/share/easy-rsa/3/easyrsa lrwxrwxrwx. 1 usradmin usradmin 41 Jul 15 17:57 openssl-easyrsa.cnf -> /usr/share/easy-rsa/3/openssl-easyrsa.cnf lrwxrwxrwx. 1 usradmin usradmin 32 Jul 15 17:57 x509-types -> /usr/share/easy-rsa/3/x509-types $ chmod 700 sample $ cd sample $ ./easyrsa init-pki init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /home/usradmin/docs/easy-rsa/sample/pki
CA局の情報を作成します。
$ cat << EOF > vars set_var EASYRSA_REQ_COUNTRY "JP" set_var EASYRSA_REQ_PROVINCE "Sample Province" set_var EASYRSA_REQ_CITY "Sample City" set_var EASYRSA_REQ_ORG "Sample ORG" set_var EASYRSA_REQ_EMAIL "info@sample.com" set_var EASYRSA_REQ_OU "Sample OU" set_var EASYRSA_ALGO "ec" set_var EASYRSA_DIGEST "sha512" EOF
実際に、CA曲の証明書を作成します。
$ ./easyrsa build-ca Using SSL: openssl OpenSSL 3.0.1 14 Dec 2021 (Library: OpenSSL 3.0.1 14 Dec 2021) Enter New CA Key Passphrase: Re-Enter New CA Key Passphrase: Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Common Name (eg: your user, host, or server name) [Easy-RSA CA]:Sample CA CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /home/usradmin/docs/easy-rsa/sample/pki/ca.crt
サーバ証明書を作成する!
サーバ証明書を作成します。まず、CSRを作成します。
$ ./easyrsa gen-req server.sample.com nopass Using SSL: openssl OpenSSL 3.0.1 14 Dec 2021 (Library: OpenSSL 3.0.1 14 Dec 2021) ...+....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+..+..........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*..+.......+...+..+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ..............+.....+.+...+......+.....+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+...........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.....+.....+....+...+..................+.....+....+...........+.......+......+.....+.........................+..+.......+........+...+......+.........+.+.....+....+......+...+.....+......+....+...+...+..+.......+...+..+...+..................+.........+......+................+.....+.+..+.............+.......................+....+........+.......+........+............+.......+.........+.....+.+........+.......+.....+.............+..+....+..+...+....+...+..............+...+.+.....+.......+.....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Common Name (eg: your user, host, or server name) [server.sample.com]: Keypair and certificate request completed. Your files are: req: /home/usradmin/docs/easy-rsa/sample/pki/reqs/server.sample.com.req key: /home/usradmin/docs/easy-rsa/sample/pki/private/server.sample.com.key
CA局の証明書で署名して、サーバ証明書を作成します。
$ ./easyrsa sign-req server server.sample.com Using SSL: openssl OpenSSL 3.0.1 14 Dec 2021 (Library: OpenSSL 3.0.1 14 Dec 2021) You are about to sign the following certificate. Please check over the details shown below for accuracy. Note that this request has not been cryptographically verified. Please be sure it came from a trusted source or that you have verified the request checksum with the sender. Request subject, to be signed as a server certificate for 825 days: subject= commonName = server.sample.com Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes Using configuration from /home/usradmin/docs/easy-rsa/sample/pki/easy-rsa-6161.H5ZxMS/tmp.UypA8Q Enter pass phrase for /home/usradmin/docs/easy-rsa/sample/pki/private/ca.key: 802B325D997F0000:error:0700006C:configuration file routines:NCONF_get_string:no value:crypto/conf/conf_lib.c:315:group=<NULL> name=unique_subject Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows commonName :ASN.1 12:'server.sample.com' Certificate is to be certified until Oct 17 09:20:54 2025 GMT (825 days) Write out database with 1 new entries Data Base Updated Certificate created at: /home/usradmin/docs/easy-rsa/sample/pki/issued/server.sample.com.crt
クライアント証明書を作成する!
クライアント証明書を作成します。まず、CSRを作成します。
$ ./easyrsa gen-req client.sample.com nopass Using SSL: openssl OpenSSL 3.0.1 14 Dec 2021 (Library: OpenSSL 3.0.1 14 Dec 2021) ........+......+.....+...+....+..+.........+.........+......+....+...........+.......+...+..+.......+...+............+..+......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+.......+............+...+..+....+.....+......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*........+...+......+.+.....+......+............+............+....+...............+......+..............+.+......+........+.+...+.....+...+....+..............+..........+...............+.........+...+........+.+.....+.+.................+...+...+.+...+..+.............+..+......+...+......+......+.......+.....+..........+...+.....+.........+....+......+........+.+.....+.......+.........+...+.................+.+..+...+....+.....+...+.+..+.............+..+....+...+.................+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...+..+...+...+.+......+...+..+.........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*........+......+..+....+.........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*......+.+......+..+...............................+.....+......+....+..+.......+........+...+................+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Common Name (eg: your user, host, or server name) [client.sample.com]: Keypair and certificate request completed. Your files are: req: /home/usradmin/docs/easy-rsa/sample/pki/reqs/client.sample.com.req key: /home/usradmin/docs/easy-rsa/sample/pki/private/client.sample.com.key
CA局の証明書で証明して、クライアント証明書を作成します。
$ ./easyrsa sign-req client client.sample.com Using SSL: openssl OpenSSL 3.0.1 14 Dec 2021 (Library: OpenSSL 3.0.1 14 Dec 2021) You are about to sign the following certificate. Please check over the details shown below for accuracy. Note that this request has not been cryptographically verified. Please be sure it came from a trusted source or that you have verified the request checksum with the sender. Request subject, to be signed as a client certificate for 825 days: subject= commonName = client.sample.com Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes Using configuration from /home/usradmin/docs/easy-rsa/sample/pki/easy-rsa-6382.4seXTJ/tmp.cCmeRW Enter pass phrase for /home/usradmin/docs/easy-rsa/sample/pki/private/ca.key: Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows commonName :ASN.1 12:'client.sample.com' Certificate is to be certified until Oct 17 09:24:39 2025 GMT (825 days) Write out database with 1 new entries Data Base Updated Certificate created at: /home/usradmin/docs/easy-rsa/sample/pki/issued/client.sample.com.crt
pkcs12形式のファイルは、以下のコマンドで作成します。
$ openssl pkcs12 -export -in pki/issued/client.sample.com.crt -inkey pki/private/client.sample.com.key -certfile pki/ca.crt -out pki/issued/sample.p12 Enter Export Password: Verifying - Enter Export Password:
おわりに
Rocky Linux 9で、EasyRSAでCA局、サーバ証明書、クライアント証明書を作成しました。一旦作成しておけば、様々な局面で利用できると思います。
関連記事
参考書籍(Amazon)