【AWS Client VPN】OpenVPN easy-rsaで証明書の有効期限を100年にする方法

記事タイトルとURLをコピーする

こんにちは!イーゴリです。

前回の記事では、自己証明書を発行し、AWS Client VPNを構築しましたが、サーバーの証明書はデフォルトの期限が2年しかありませんので、この記事では、OpenVPN easy-rsaで証明書の有効期限を100年にする方法をご紹介致します。

blog.serverworks.co.jp

注意点:

  • 有効期限の長いクライアント証明書を使う場合は、紛失時に失効する運用を想定しましょう。
  • 証明書の生成時に利用した暗号化アルゴリズムが、長い期間の経過により技術陳腐化したり脆弱性が見つかる可能性があります。
[ec2-user@ip-10-123-10-12 ~]$ cd ~
[ec2-user@ip-10-123-10-12 ~]$ yum git
[ec2-user@ip-10-123-10-12 ~]$ sudo yum update -y
~~ログを省略~~
Complete!
[ec2-user@ip-10-123-10-12 ~]$ git version
git version 2.32.0

OpenVPN easy-rsaをインストールします。

[ec2-user@ip-10-123-10-12 ~]$ git clone https://github.com/OpenVPN/easy-rsa.git
Cloning into 'easy-rsa'...
remote: Enumerating objects: 3296, done.
remote: Counting objects: 100% (1155/1155), done.
remote: Compressing objects: 100% (592/592), done.
remote: Total 3296 (delta 572), reused 1102 (delta 534), pack-reused 2141
Receiving objects: 100% (3296/3296), 25.46 MiB | 12.21 MiB/s, done.
Resolving deltas: 100% (1514/1514), done.
[ec2-user@ip-10-123-10-12 ~]$ cd easy-rsa/easyrsa3/
[ec2-user@ip-10-123-10-12 easyrsa3]$ cp vars.example vars

各証明書の有効期限を100年に変更し、pkiのディレクトリに移動します。

[ec2-user@ip-10-123-10-12 easyrsa3]$ vi vars
set_var EASYRSA_CA_EXPIRE 36500
set_var EASYRSA_CERT_EXPIRE 36500
set_var EASYRSA_CRL_DAYS 36500
[ec2-user@ip-10-123-10-12 easyrsa3]$ mv vars pki/   #pkiディレクトリがない場合、不要

※サーバー証明書/クライアント証明書のみ(CA証明書の期限はデフォルトのまま→10年)期限を伸ばしたい場合、「EASYRSA_CERT_EXPIRE」のみを変更します。

新しい PKI 環境を初期化します。

[ec2-user@ip-10-123-10-12 easyrsa3]$ ./easyrsa init-pki
* Notice:

  init-pki complete; you may now create a CA or requests.

  Your newly created PKI dir is:
  * /home/ec2-user/easy-rsa/easyrsa3/pki

  IMPORTANT: Easy-RSA 'vars' file has now been moved to your PKI above.

新しい認証機関 (CA) を構築します。

[ec2-user@ip-10-123-10-12 easyrsa3]$ ./easyrsa build-ca nopass
* Notice:
Using Easy-RSA configuration from: /home/ec2-user/easy-rsa/easyrsa3/pki/vars

* Notice:
Using SSL: openssl OpenSSL 1.0.2k-fips  26 Jan 2017

~~ログを省略~~

Common Name (eg: your user, host, or server name) [Easy-RSA CA]:test-ca

* Notice:

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/home/ec2-user/easy-rsa/easyrsa3/pki/ca.crt

[/home/ec2-user/easy-rsa/easyrsa3/pki/ca.crt]がCAのルート証明書です。

下記のコマンドで自分自身(Subject)及び認証局(Issuer)を確認することができます。期限は2122年(100年間)になっていますね。

[ec2-user@ip-10-123-10-12 ~]$ openssl x509 -text -noout -in pki/ca.crt
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            87:13:cc:77:81:3c:27:e4
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN=test-ca
        Validity
            Not Before: May 17 08:54:35 2022 GMT
            Not After : Apr 23 08:54:35 2122 GMT
        Subject: CN=test-ca
〜省略〜

サーバーの証明書とキーを生成します。

[ec2-user@ip-10-123-10-12 easyrsa3]$ ./easyrsa build-server-full server nopass
〜省略〜
Certificate is to be certified until Apr 23 08:55:58 2122 GMT (36500 days)
〜省略〜

証明書の確認:

[ec2-user@ip-10-123-10-12 easyrsa3]$ openssl x509 -text -noout -in pki/issued/server.crt 
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            57:6d:56:3c:10:34:49:bf:a0:0e:34:12:04:6b:b0:41
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN=test-ca
        Validity
            Not Before: May 17 08:55:58 2022 GMT
            Not After : Apr 23 08:55:58 2122 GMT
        Subject: CN=server
〜省略〜

クライアント証明書及び鍵を発行する必要がある場合、同じように発行します。

[ec2-user@ip-10-123-10-12 easyrsa3]$ ./easyrsa build-client-full client123.domain.tld nopass
〜省略〜
Certificate is to be certified until Apr 23 08:56:10 2122 GMT (36500 days)
〜省略〜

証明書の確認:

[ec2-user@ip-10-123-10-12 easyrsa3]$ openssl x509 -text -noout -in pki/issued/client123.domain.tld.crt
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            ba:9f:51:b2:3c:29:ef:d1:e5:27:4d:2c:a1:1c:8f:39
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN=test-ca
        Validity
            Not Before: May 17 08:56:10 2022 GMT
            Not After : Apr 23 08:56:10 2122 GMT
        Subject: CN=client123.domain.tld
〜省略〜

以上、御一読ありがとうございました。

本田 イーゴリ (記事一覧)

カスタマーサクセス部

・2024 Japan AWS Top Engineers (Security)
・AWS SAP, DOP, SCS, DBS, SAA, DVA, CLF
・Azure AZ-900
・EC-Council CCSE

趣味:日本国内旅行(47都道府県制覇)・ドライブ・音楽