Go to main content
Oracle® Solaris 11.3 での Kerberos およびその他の認証サービスの管理

印刷ビューの終了

更新: 2017 年 3 月
 
 

スマートカード用の OCSP 証明書の構成

スマートカードの証明書は、2 番目の認証ファクタに使用されます。スマートカードは、ルート CA によって検証された証明書を含む「持ち物」になります。


注 - 証明書を保存し、CRL をローカルで使用する場合には、このタスクをスキップできます。

証明書を構成および検証する方法

この手順では、スマートカード認証用にルート証明書を構成し、ocspd デーモンがスマートカード上にある証明書のステータスを確認できることをテストする方法を示します。認証局 (CA) を構成する端末ウィンドウと、ocspd 検証をテストする別の端末ウィンドウの 2 つのウィンドウが必要になります。

始める前に

Oracle Solaris で、libpki ライブラリが OpenSSL で推奨される暗号化プロバイダおよび OpenLDAP ライブラリにすでにリンクされています。openca-ocspd レスポンダは、libpki を使用して PKI 証明書を生成から検証まで管理します。

root 役割になっています。詳細は、Oracle Solaris 11.3 でのユーザーとプロセスのセキュリティー保護 の 割り当てられている管理権利の使用を参照してください。

  1. テスト認証局 (CA) を設定します。

    たとえば、次のコマンドはローカルの CA を作成します。

    # cd /root
    # mkdir CertAuth
    # cd CertAuth
    # mkdir certs private
    # chmod g-rwx,o-rwx private
    # echo '01' > serial
    # touch index.txt
  2. openssl.conf ファイルをこの CA を指すように構成します。

    たとえば、次の openssl.conf ファイルは root CA を指します。

    # cat << 'EOF' > openssl.conf
    [ ca ]
    default_ca              = CertAuth
    
    [ CertAuth ]
    dir                     = /root/CertAuth
    certificate             = $dir/cacert.pem
    database                = $dir/index.txt
    new_certs_dir           = $dir/certs
    private_key             = $dir/private/cakey.pem
    serial                  = $dir/serial
    
    default_crl_days        = 7
    default_days            = 365
    default_md              = sha256
    
    policy                  = CertAuth_policy
    x509_extensions         = certificate_extensions
    copy_extensions         = copy
    
    [ CertAuth_policy ]
    commonName              = supplied
    stateOrProvinceName     = optional
    countryName             = optional
    emailAddress            = optional
    organizationName        = optional
    organizationalUnitName  = optional
    
    [ certificate_extensions ]
    basicConstraints        = CA:false
    extendedKeyUsage        = OCSPSigning
    
    [ req ]
    default_bits            = 2048
    default_keyfile         = /root/CertAuth/private/cakey.pem
    default_md              = sha256
    
    prompt                  = no
    distinguished_name      = root_ca_distinguished_name
    
    x509_extensions         = root_ca_extensions
    
    [ root_ca_distinguished_name ]
    commonName              = CertAuth
    
    [ root_ca_extensions ]
    basicConstraints        = CA:true
    EOF
  3. 既存のシェルで OPENSSL_CONF 環境変数を宣言します。

    注 -  CA は自分のネットワークからアクセス可能である必要があります。
    # export OPENSSL_CONF=/root/CertAuth/openssl.conf
  4. CA 鍵および CA 証明書を作成します。
    # openssl genrsa -out private/cakey.pem 2048
    Generating RSA private key, 2048 bit long modulus
    ...+++
    ..............................+++
    e is 65537 (0x10001)
    
    # openssl req -new -x509 -days 999 -key private/cakey.pem -out cacert.pem
  5. 新しい端末でテスト証明書署名要求 (CSR) を作成します。
    # unset OPENSSL_CONF
    # cd /root
    # mkdir test_client
    # cd test_client
    
    # openssl genrsa -out testkey.pem 2048
    
    # openssl req -new -key testkey.pem -out testreq.pem
      Country Name (2 letter code) []:
      State or Province Name (full name) []:
      Locality Name (eg, city) []:
      Organization Name (eg, company) []:
      Organizational Unit Name (eg, section) []:
      Common Name (e.g. server FQDN or YOUR name) []:test
      Email Address []:
      A challenge password []:
      An optional company name []:
  6. テスト証明書を作成し、取り消しできることを確認します。

    端末構成を CA に変更します。

    # export OPENSSL_CONF=/root/CertAuth/openssl.conf
    
    # cd /root/CertAuth
    
    # openssl ca -in /root/test_client/testreq.pem
      Sign the certificate? [y/n]:y
      1 out of 1 certificate requests certified, commit? [y/n]y
    
    # openssl verify -CAfile cacert.pem certs/01.pem
    
    # cp certs/01.pem /root/test_client/testcert.pem
    
    # openssl ca -revoke /root/test_client/testcert.pem
    
    # openssl ca -gencrl -out crl.pem
  7. 新しい端末で ocspd デーモンの鍵および証明書署名要求を作成します。
    # unset OPENSSL_CONF
    
    # cd /etc/ocspd
    
    # ocspd-genreq.sh
      Please Enter the Server's Subject (eg., CN=OCSP Server, O=OpenCA, C=US):[Enter]
      Please Enter the Algorithm (default: RSA-SHA256):[Enter]
      Please Enter the Key Size (default: 2048):[Enter]
    
    # cp /etc/ocspd/req.pem /root/CertAuth/ocspdreq.pem
    # chmod a+r /root/CertAuth/ocspdreq.pem

    注 -  サーバー鍵を暗号化する場合、プロンプトが表示されたらパスワードを使用します。
  8. ocspd の証明書を作成します。

    pem ファイルを /etc/ocspd にコピーします。

    # export OPENSSL_CONF=/root/CertAuth/openssl.conf
    # cd /root/CertAuth
    # openssl ca -in ocspdreq.pem
      Sign the certificate? [y/n]:y
      1 out of 1 certificate requests certified, commit? [y/n]y
    
    # openssl verify -CAfile cacert.pem certs/02.pem
    
    # cp /root/CertAuth/certs/02.pem /etc/ocspd/certs/cert.pem
    # cp /root/CertAuth/cacert.pem /etc/ocspd/certs
    # cp /root/CertAuth/crl.pem /etc/ocspd/crls
  9. ocsp サービスを有効化し、ocspd デーモンが daemon として実行していることを確認します。

    デフォルトでは、ocspd デーモンは smartcard グループパッケージのインストール後に無効化されます。Oracle Solaris でのスマートカード認証で OCSPD レスポンダを使用するには、このサービスを有効にする必要があります。

    # svcs ocsp
    STATE          STIME    FMRI
    disabled       14:21:16 svc:/application/security/ocsp:default
    
    # svcadm enable ocsp
    
    # svcs ocsp
    STATE          STIME    FMRI
    online         14:27:13 svc:/application/security/ocsp:default
    
    # ps -ef |grep ocspd
      daemon 22814     1   0 14:27:14 ?           0:00 /usr/lib/ocspd -c /etc/ocspd/ocspd.xml -d
  10. 通常のユーザーとして、証明書の失効ステータスを確認します。
    $ openssl ocsp -issuer /etc/ocspd/certs/cacert.pem \
       -CAfile /etc/ocspd/certs/cacert.pem -url http://localhost:2560/ -serial 1
    Response verify OK
    1: revoked
            This Update: Jun 12 21:03:32 2016 GMT
            Next Update: Jun 12 21:08:32 2016 GMT
            Revocation Time: Jun 12 20:49:22 2016 GMT
    
    $ openssl ocsp -issuer /etc/ocspd/certs/cacert.pem \
      -CAfile /etc/ocspd/certs/cacert.pem -url http://localhost:2560/ -serial 2
    Response verify OK
    2: good
            This Update: Jun 12 21:03:54 2016 GMT
            Next Update: Jun 12 21:08:54 2016 GMT