[マネージドPKI] クライアント証明書 Apacheの設定方法

  1. GMOグローバルサインサポート
  2. クライアント証明書サポート情報
  3. サーバへの設定
  4. [マネージドPKI] クライアント証明書 Apacheの設定方法
最終更新:2025年01月22日

SSLクライアント認証を行うにあたって、Apache上でSSLサーバー認証を有効にしている必要があります。SSLサーバー証明書の設定詳細は弊社サポートページを参照してください。

本手順はApache2.4系をベースに作成しております。

本ページは、2024年12月9日に追加されるルート証明書、中間CA証明書の追加に伴い、新しい中間CA証明書から発行されたクライアント証明書と従来の中間CA証明書から発行された証明書を併用してご利用になる場合の手順をご案内しております。
※以降、変更前の中間CA証明書を「旧中間CA証明書」、変更後の中間CA証明書を「新中間CA証明書」とします。詳細はこちら

既に旧中間CA証明書(2020年11月11日以降発行分)から発行されたクライアント証明書をご利用のお客様は、新中間CA証明書を追加で設定してください。
※下記手順の①~③をご参照ください。

また、新中間CA証明書から発行、または再発行される証明書のCRL配布ポイントやOCSPのURLも変更となります。CRLの取得先URLをスクリプト等に直接記述して取得している場合は、新しいURLの追加や修正が必要となります。
※下記手順の補足をご参照ください。

※本ページの手順は専用BaseDNを用いたOとOUの認証で設定しています。
2023年8月27日に追加される「S/MIME BR(レガシー)対応用中間CA証明書」から発行されたクライアント証明書はOUがご利用いただけませんので、 本ページの設定をする場合は従来の中間CA証明書(アクセス認証用中間CA証明書)から発行された証明書をご利用ください。

※弊社では以下の手順にて動作検証をおこなった際の一例をご紹介しており、動作を保証するものではございません。
本手順について内容の変更等や誤りがあった場合、弊社では一切の責任を負いかねることを予めご了承ください。詳細は各アプリケーションのドキュメント等をご参照ください。

※Apacheはオープンソースのアプリケーションです。脆弱性などの問題がないか、随時情報を確認いただき、万一問題が発見された場合は、該当サービスの停止や、対応パッチがリリースされている場合は速やかに適用するなど、運用には十分ご注意ください。

動画でもクライアント認証の設定手順についてご案内しております。

認証局証明書の用意

  1. 以下より、クライアント証明書のルート証明書を取得してください。
    SHA256 ルート証明書(R3)
    SHA384 ルート証明書(R45)

  2. 以下より、クライアント証明書の中間CA証明書を取得してください。
    SHA256 クライアント証明書用中間CA証明書2020
    SHA384 クライアント証明書用中間CA証明書2024(R45)

  3. 取得したファイルを1つのファイルに結合し、サーバに保存します。順不同でもかまいません。

    結合の例

    -----BEGIN CERTIFICATE-----
    <ルート証明書(R3)>
    -----END CERTIFICATE-----
    --BEGIN CERTIFICATE-----
    <中間CA証明書(R3)>
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    <新ルート証明書(R45)>
    -----END CERTIFICATE-----
    --BEGIN CERTIFICATE-----
    <新中間CA証明書(R45)>
    -----END CERTIFICATE-----

    保存先の例

    /etc/httpd/conf/ssl.crt/root.pem

Apache設定ファイルの変更

Apacheのバージョン等により設定ファイル名、場所は多少異なりますがhttpd.conf 、ssl.conf、httpd-ssl.conf等の該当部分を設定します。

クライアント認証用 認証局証明書の設定例

SSLCACertificateFile /etc/httpd/conf/ssl.crt/root.pem

OCSPによる失効確認の有効化

※CRLを利用する場合は下記「補足」をご参照ください。

SSLOCSPEnable on

※ ※Directoryディレクティブの外に記述します。
※Apache2.2系では利用できない場合がございます。

SSLクライアント認証の設定の有効化

SSLOptions +StdEnvVars
SSLVerifyClient require
SSLVerifyDepth 3
<Directory "/var/www/httpdocs/test">
SSLRequire %{SSL_CLIENT_S_DN_O} eq "GMO GlobalSign K.K." \
and %{SSL_CLIENT_S_DN_OU} eq "Sales"
</Directory>

※SSLRequire で指定したクライアント証明書以外の接続を拒否するよう設定します。
専用BaseDNを利用することで、証明書のO(組織名)とOU(部門名)フィールドにはお客様固有の情報が設定されます。この部分をクライアント認証の設定にご利用ください。

補足

失効確認にCRLを利用する場合は、以下のディレクティブを設定します。

SSLCARevocationFile /etc/httpd/conf/ssl.crl/crl.pem
SSLCARevocationCheck chain

Apache2.2系の場合はSSLCARevocationCheckディレクティブは利用できません。SSLCARevocationFileディレクティブのみご設定ください。

上記CRLファイル"crl.pem"をcron設定等で定期的に自動取得できるように設定しておくことを推奨します。CRLファイルは、証明書の「CRL配布ポイント」に記載されているURLからHTTPで取得することができます。
手動で取得し指定場所に保存することも可能ですが、有効期限の切れたCRLは無効な情報と判断され、Apacheでは認証しません。定期的に最新のCRLを取得する必要があります。
※弊社CRLの有効期限は7日間となります。

ApacheはDER形式のCRLは読み込めないので、OpenSSLコマンドにてPEM形式に変換して利用します。
※CRLはクライアント証明書と中間CA証明書それぞれのCRLを「CRL配布ポイント」から取得し、全て結合します。 ご利用のクライアント証明書(エンドエンティティ証明書)、中間CA証明書のCRL配布ポイントをご確認ください。
※2024年12月9日に追加されるルート証明書、中間CA証明書をご利用の場合は、既存のCRL(R3)に加え、新たなCRL(R45)を同様の手順で取得し、全て結合します。

変換コマンド例

openssl crl -inform der -in 変換前DERファイル名 -outform pem -out 変換後PEMファイル名

結合コマンド例

cat 結合前ファイル名a 結合前ファイル名b> 結合後ファイル名

結合の例

-----BEGIN X509 CRL-----
<中間CA証明書のCRL(R3)>
-----END X509 CRL-----
-----BEGIN X509 CRL-----
<エンドエンティティ証明書のCRL(R3)>
-----END X509 CRL-----
-----BEGIN X509 CRL-----
<中間CA証明書のCRL(R45)>
-----END X509 CRL-----
-----BEGIN X509 CRL-----
<エンドエンティティ証明書のCRL(R45)>
-----END X509 CRL-----

※cron設定やOpenSSLコマンド、シェルスクリプトの作成につきましては、ドキュメント等をご参照いただき、ご利用の環境に合った設定をご確認ください。

設定は以上で完了です。 Apacheを再起動し、有効なクライアント証明書でのアクセスが可能かご確認ください。