第4章 IdM と機能する証明書形式への変換
このユーザーストーリーでは、IdM システム管理者が、特定の IdM コマンドで証明書の正しい形式を使用するようにする方法を説明します。これは、たとえば以下の状況で役に立ちます。
- ユーザープロファイルに外部証明書を読み込んでいる。詳細は、IdM ユーザーアカウントに読み込む外部証明書の変換 を参照してください。
- IdM サーバーをスマートカード認証用に設定する場合、または IdM クライアントをスマートカード認証用に設定する場合 に、外部 CA 証明書を使用して、ユーザーが外部認証局から発行された証明書が含まれるスマートカードで IdM を認証できるようにしている。
- NSS データベースから、証明書と秘密鍵の両方を含む pkcs #12 形式で、証明書をエクスポートしている。詳細は、NSS データベースから PKCS #12 ファイルへの証明書と秘密鍵のエクスポート を参照してください。
4.1. IdM での証明書の形式およびエンコード
IdM におけるスマートカード認証を含む証明書認証は、ユーザーが提示する証明書と、ユーザーの IdM プロファイルに保存されている証明書または証明書データを比較することによって進められます。
システムの設定
IdM プロファイルに格納されるものは証明書のみで、対応する秘密鍵ではありません。また、認証中に、ユーザーが、対応する秘密鍵の所有していることを表示する必要があります。ユーザーは、証明書と秘密鍵の両方が含まれる PKCS #12 ファイル、またはこれら 2 つのファイル (証明書が含まれるファイルと、秘密鍵が含まれているファイル) のいずれかを提示して行います。
したがって、ユーザープロファイルに証明書を読み込むなどのプロセスでは、秘密鍵を含まない証明書ファイルのみが使用できます。
同様に、システム管理者が外部の CA 証明書を提供している場合は、パブリックデータ (秘密鍵がない証明書) のみを提供します。スマートカード認証用の IdM サーバーまたは IdM クライアントを設定する ipa-advise
ユーティリティーでは、外部 CA の証明書が含まれる入力ファイルが必要ですが、秘密鍵は必要ありません。
証明書のエンコーディング
2 つの一般的な証明書エンコーディング PEM
(Privacy-enhanced Electronic Mail) および DER
(Distinguished Encoding Rules) があります。base64
形式は PEM
形式とほぼ同じですが、ヘッダーおよびフッター (-----BEGIN CERTIFICATE----- および -----END CERTIFICATE-----
) は含まれません。
DER
を使用してエンコードされた証明書は、バイナリーファイルの X509 デジタル証明書です。証明書はバイナリーファイルで、人間は判読できません。DER
ファイルは、ファイル名の拡張子 .der
を使用することもありますが、ファイル名の拡張子 .crt
および .cer
が DER
証明書が含まれることもあります。鍵を含む DER
ファイルの名前は .key
です。
PEM
Base64 を使用してエンコードされた証明書は、人間が判読できるファイルです。このファイルには、-----BEGIN …の行頭に付けられた ASCII (Base64) のデータが含まれます。PEM
ファイルは、.pem
ファイル拡張子を使用することもありますが、ファイル名の拡張子 .crt
および .cer
に PEM
証明書が含まれる場合もあります。鍵を含む PEM
ファイルの名前は .key
です。
ipa
コマンドには、許可される証明書の種類に、さまざまな制限があります。たとえば、ipa user-add-cert
コマンドでは、base64
形式でエンコードされた証明書のみが使用できますが、ipa-server-certinstall
は、PEM、DER、PKCS #7、PKCS #8
および PKCS #12
の証明書が使用できます。
エンコーディング形式 | 人間が判別可能 | 一般的なファイル名の拡張子 | エンコーディング形式を使用できる IdM コマンドの例 |
---|---|---|---|
PEM/base64 | はい | .pem、.crt、.cer | ipa user-add-cert、ipa-server-certinstall など |
DER | いいえ | .der、.crt、.cer | ipa-server-certinstall など |
IdM の証明書関連のコマンドおよび形式 は、コマンドが受け入れる証明書形式を含むその他の ipa
コマンドをリスト表示します。
ユーザー認証
ブラウザーのデータベースに秘密鍵と証明書の両方を保存することで、Web UI を使用して IdM にアクセスすると、証明書に対応する秘密鍵をユーザーが所有していることを証明します。
CLI を使用して IdM にアクセスすると、以下のいずれかの方法で、証明書に対応する秘密鍵をユーザーが所有していることを証明します。
ユーザーは、
kinit -X
コマンドのX509_user_identity
パラメーターの値として、証明書と鍵の両方が含まれるスマートカードに接続するスマートカードモジュールへのパスを追加します。$ kinit -X X509_user_identity='PKCS11:opensc-pkcs11.so'
idm_user
ユーザーは、
kinit -X
コマンドのX509_user_identity
パラメーターの値として、証明書が含まれるファイルと、秘密鍵が含まれるファイルの 2 つを追加します。$ kinit -X X509_user_identity='FILE:`/path/to/cert.pem,/path/to/cert.key`'
idm_user
便利な証明書コマンド
証明書データ (発行先や発行者など) を表示するには、次のコマンドを実行します。
$ openssl x509 -noout -text -in ca.pem
2 つの証明書で、異なる行を比較するには、次のコマンドを実行します。
$ diff cert1.crt cert2.crt
2 つの証明書の出力を 2 列で表示して、2 つの証明書で異なる行を比較するには、次のコマンドを実行します。
$ diff cert1.crt cert2.crt -y