2008年4月18日金曜日

サーバ証明書を確認できません

http://www.nsoftware.com/kb/showentry.aspx?entry=10080102

該当製品:


  • IP*Works! SSL


現象:


接続を試みると、サーバ証明書が確認できなかった旨のエラーが表示されます。

解決法:


SSL コネクションを確立する際に、サーバは常に接続対象のクライアントに対し証明書を提示します。そしてクライアントはシステムをチェックし、サーバの証明書が有効であるかどうか (つまり証明書の有効期間が正しいか、証明書の CN がリモートホストの名称と一致するか、証明書の発行機関が信頼できるか、等) を調べます。もし当該証明書が無効なものであった場合、"Error verifying server certificate" (サーバ証明書の確認エラー) というエラーが表示されるでしょう。

この問題を解決するには、以下のいずれかを行います:
  1. 当該ウェブサーバにインストールされている有効なサーバ証明書を取得する
  2. 当該証明書を受理するようプログラムで対応
  3. クライアントマシン側に、サーバ証明書を発行する機関の公開鍵を、信頼できる CA (Certificate Authority; 証明書発行機関) ストアにインストールする。

証明書をプログラムで受理する場合は、次のうちのいずれかで行えます:
  1. SSLAcceptServerCert プロパティに、受理すべき証明書の公開鍵を Base64 エンコードしたものを設定します。また、このプロパティには、コネクションを試行すると、それが成功したか失敗したかにかかわらず実際のサーバ証明書が格納されます。
  2. SSLServerAuthentication イベントを使用してサーバ証明書を検査し、Accept パラメータに true を設定する。

実例:
    if Err.number = 20277 then 'Cert not trusted 
control.SSLAcceptServerCert = control.SSLServerCert
control.Method()
end if

あるいは、SSLServerAuthentication イベント内で
    e.Accept = True 

*警告* - 信頼されていない証明書を受理することで、セキュリティ上の問題を発生する可能性があります。たとえデータは暗号化されている場合であっても、サーバの同一性が証明されるわけではありません。

0 件のコメント: