サポート

[マネージドPKI] クライアント認証 Apacheの設定方法(SHA-1証明書)

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

認証局証明書の用意

no01.gif以下のルート証明書、中間CA証明書を取得してください。
ルート証明書
クライアント証明書用中間CA証明書v3(SHA-1)

2016年4月3日以前に発行された証明書も利用する場合は、以下の中間証明書も取得します。
クライアント証明書用中間CA証明書v2(SHA-1)

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

結合の例

-----BEGIN CERTIFICATE-----
〈ルート証明書〉
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
〈中間CA証明書〉
-----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

CRLファイルの設定例

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

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

SSLOptions +StdEnvVars
SSLVerifyClient require
SSLVerifyDepth 3
<Directory "/var/www/httpdocs/test">
SSLRequire %{SSL_CLIENT_S_DN} =~ m?/O=GlobalSign K\.K\./OU=Sales/?
</Directory>

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

CRL自動取得の設定

失効確認を利用する場合、前項で設定したCRLを自動で取得できるように設定します。
CRLは、証明書のCRL配布ポイントに記載されているURLからHTTPで取得することができます。
手動で指定場所に保存することも可能ですが、有効期限の切れたCRLは無効な情報と判断され、Apacheは認証しません。定期的に最新のCRLを取得する必要があります。
2016年4月4日の中間CA証明書の変更前後でのCRLの発行場所は以下のようになります。

http://crl.globalsign.com/gs/gspersonalsign2g2.crl
http://crl.globalsign.com/gs/gspersonalsign2g3.crl

ApacheはDER形式のCRLは読み込めないので、OpenSSLコマンドにてPEM形式に変換して利用します。
以下はサンプルスクリプトです。このようなスクリプトがcron設定等で自動的に実行されるようにしておきます。
※あくまでも一例であり、すべての環境における動作を保証するものではありません。
サーバ環境等により設定が異なる場合がありますので、参考情報に留めていただき、ご利用の環境に合った設定をご確認ください。

2016年4月4日以降の証明書のみを使用する場合の設定例

#!/bin/sh

export LANG=C

# クライアント証明書に記載のCRL配布ポイント(CDP)からCRLを取得します。
# ご利用の証明書に対応する適切なURLで利用する必要があります。
# 最新のCRLをローカルに持っている場合はCRLを新たに取得しません。
wget --timestamping http://crl.globalsign.com/gs/gspersonalsign2g3.crl >/dev/null 2> res1.txt
grep -w saved res1.txt > /dev/null
RES1=$?
rm -f res1.txt

# 新たに取得したCRLをPEM形式に変換し、上位CAの署名を確認します。
# あらかじめ対応する中間CA証明書をリポジトリ(https://jp.globalsign.com/repository/)から取得し、
# シェルスクリプトが存在する同じディレクトリに保存しておく必要があります。
if [ $RES1 = 0 ] ; then
rm -f crl.pem
openssl crl -inform der -in gspersonalsign2g3.crl -outform pem -out crl.pem 2>&1
openssl crl -in crl.pem -CAfile ./gspersonalsign2g3ocsp_v2.cer -noout > /dev/null 2>/dev/null
/etc/rc.d/init.d/httpd graceful
# gracefulで問題のある環境ではrestartで対応ください
# /etc/rc.d/init.d/httpd restart
fi

2016年4月4日前後で発行された証明書を併用する場合の設定例

2016年4月4日前後で発行された証明書を併用する場合は、以下のような設定が必要です。

#!/bin/sh

export LANG=C

# クライアント証明書に記載のCRL配布ポイント(CDP)からCRLを取得します。
# ご利用の証明書に対応する適切なURLで利用する必要があります。
# 最新のCRLをローカルに持っている場合はCRLを新たに取得しません。
wget --timestamping http://crl.globalsign.com/gs/gspersonalsign2g2.crl >/dev/null 2>res1.txt
grep -w saved res1.txt > /dev/null
RES1=$?
rm -f res1.txt
wget --timestamping http://crl.globalsign.com/gs/gspersonalsign2g3.crl >/dev/null 2> res2.txt
grep -w saved res2.txt > /dev/null
RES2=$?
rm -f res2.txt

# 新たに取得したCRLをPEM形式に変換し、上位CAの署名を確認します。
# あらかじめ対応する中間CA証明書をリポジトリ(https://jp.globalsign.com/repository/)から取得し、
# シェルスクリプトが存在する同じディレクトリに保存しておく必要があります。
if [ $RES1 = 0 ] ; then
rm -f crl1.pem
openssl crl -inform der -in gspersonalsign2g2.crl -outform pem -out crl1.pem 2>&1
openssl crl -in crl1.pem -CAfile ./pscacert_v2-2.cer -noout > /dev/null 2>/dev/null
RES1=$?
fi

if [ $RES2 = 0 ] ; then
rm -f crl2.pem
openssl crl -inform der -in gspersonalsign2g3.crl -outform pem -out crl2.pem 2>&1
openssl crl -in crl2.pem -CAfile ./gspersonalsign2g3ocsp_v2.cer -noout > /dev/null 2>/dev/null
RES2=$?
fi

# どちらかのCRLがアップデートされていたら、2つのCRLを結合します。
# 必要であれば適切なディレクトリに移動させます。
if [ $RES1 = 0 ] || [ $RES2 = 0 ]
then
cp crl1.pem crl.pem
cat crl2.pem >> ./crl.pem
echo "Now crl.pem is updated"
else
echo "Current CRL is up-to-date and so not updated, otherwise there's an error"
exit 1
fi

/etc/rc.d/init.d/httpd graceful
# gracefulで問題のある環境ではrestartで対応ください。
# /etc/rc.d/init.d/httpd restart

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

サポートサイト内検索

03-6370-6500 お気軽にお問い合わせください

音声ガイダンスが流れましたら、お問合わせの内容により以下の番号をプッシュしてください。

  1. 証明書のお申し込み、更新及びパスワードのお問い合わせ
  2. インストールなどの技術的なお問い合わせ
  3. 審査及び進捗確認に関するお問い合わせ
  4. その他のお問い合わせ(4を押した上で、以下の番号をお選びください。)
  5. お支払い、経理書類に関するお問い合わせ
  6. パートナー契約に関するお問い合わせ
  7. 総務へのご連絡

お問い合わせはこちら

SSLはグローバルサイン - © 2007-2016 GMO GlobalSign K.K. All rights reserved.