🔥

Easy-RSAで作成したサーバ・クライアント証明書をAWSで利用する

2024/05/08に公開

目的

Easy-RSAで作成したサーバ証明書をAWSClientVPNの相互認証用クライアントVPNエンドポイントで使用します。クライアントVPNエンドポイントの作成についてはこちらを参照ください。

概要

通常、AWSCertificateManager(ACM)を利用すれば、DNS認証によるサーバ証明書の自動更新が適用され、定期的な更新作業が不要となります。しかしながら、ACMは公開SSL/TLS証明書の管理に特化しており、クライアント証明書の生成機能は提供されていません。したがって、相互認証用のクライアント証明書を作成する場合、ACMを使用することはできません。そのため、代替手段としてEasy-RSAを利用することが適切です。Easy-RSAは証明書や鍵の生成、署名、管理などを行うためのツールセットであり、VPNサーバなどで相互認証用のクライアント証明書を手動で生成するのに適しています。

手順として

  1. 認証局の作成:
% git clone https://github.com/OpenVPN/easy-rsa.git
% cd easy-rsa/easyrsa3
% ./easyrsa init-pki
% ./easyrsa build-ca nopass
  1. 証明書の作成:
    Easy-RSAを使用して、サーバ証明書とクライアント証明書、その秘密鍵を生成します。これにより、VPNサーバの識別と暗号化のための鍵が作成されます。
% ./easyrsa build-server-full server.domain.com nopass
% ./easyrsa build-client-full client1.domain.tld nopass
  1. サーバ証明書のインポート:
    AWSの管理コンソールで、ClientVPNの設定ページに移動し、サーバ証明書とその秘密鍵をアップロードします。これにより、AWSClientVPNサービスがこの証明書を使用してサーバを認証できるようになります。
% mkdir ~/custom_folder/
% cp pki/ca.crt ~/custom_folder/
% cp pki/issued/server.crt ~/custom_folder/
% cp pki/private/server.key ~/custom_folder/
% cp pki/issued/client1.domain.tld.crt ~/custom_folder
% cp pki/private/client1.domain.tld.key ~/custom_folder/
$ cd ~/custom_folder/
% aws acm import-certificate --certificate fileb://server.crt --private-key fileb://server.key --certificate-chain fileb://ca.crt
  1. クライアント証明書のACMへのインポート:
    クライアント証明書を AWSCertificateManager(ACM) にインポートすることは可能です。ACMは主に公開 SSL/TLS証明書の管理に特化していますが、クライアント証明書も同様に扱うことができます。そのため、クライアント証明書を AWS管理コンソールからACMにインポートし、その後、相互認証用のクライアントVPNエンドポイントで使用することができます。
  2. VPNクライアントの構成:
    クライアントは、クライアント証明書とその秘密鍵を使用して VPN接続を確立するために、適切なVPNクライアントソフトウェアを構成する必要があります。VPNクライアントソフトウェアには、AWSの公式クライアントや、他のサードパーティ製品が使用できます。
  3. 証明書の適宜更新
% ./easyrsa renew server nopass
% mkdir ~/custom_folder2
% cp pki/ca.crt ~/custom_folder2/
% cp pki/issued/server.crt ~/custom_folder2/
% cp pki/private/server.key ~/custom_folder2/
% cd ~/custom_folder2/
% aws acm import-certificate --certificate fileb://server.crt --private-key fileb://server.key --certificate-chain fileb://ca.crt

注意点

Easy-RSAでオレオレ認証局を作成し、その認証局で生成した証明書は、一般的な公的認証局(CA)によって署名された証明書とは異なり、その信頼性やセキュリティのレベルも異なります。そのため、AWSCertificate Manager(ACM)では、一般的な公的認証局が提供する方法であるDNS認証やEmailドメイン認証などを使用して証明書を認証することはできません。

オレオレ認証局で生成された証明書は、自己署名されたものであり、信頼性を確保するためには、クライアント側で明示的に信頼される必要があります。そのため、ACMではこのような証明書を扱うことはできません。

したがって、オレオレ認証局で生成された証明書を使用する場合、通常は手動で証明書を管理し、VPNクライアントなどの各エンドポイントで信頼される証明書として設定する必要があります。

Discussion