7

私の理解では、実際にはIPアドレスに発行された証明書を作成することは可能です。IIS Express内でこれを行うことは可能ですか?

これはテスト専用であることに注意してください。

編集

人々は私の質問の本物の肉とジャガイモを見逃しているようですので、私は余分な詳細を削除しました。

4

3 に答える 3

9

すべての提案を@Brunoに感謝します!! 別のツールを使用してSSL証明書を作成することで、正しい方向に進むことができました。

最初に、IIS 6selfsslコマンドラインツールを試しました。これは、これを機能させるためのステップ1でも機能する可能性があります(ただし、現在のソリューションを見つけた後はテストしていません)。最初のステップは証明書を作成することであり、2番目のステップはその証明書を私のIP/ポートにバインドすることです。

  1. Visual Studioコマンドプロンプトのmakecertを使用して証明書を作成しました(これは、IIS6リソースキットのIIS6 selfsslツールも機能するはずです)。mmc証明書を作成した後、スナップインコンソールを使用して[個人/証明書]で証明書を見つけ、証明書スナップインを追加しました。

    makecert -r -pe -n "CN=0.0.0.0" -b 01/01/2011 -e 01/01/2025 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12

  2. 証明書をIP/ポートにバインドするために、netshを使用しました。ipportIP/ポートに変更する必要があります。appidはGUIDであり、これが設定内容に関係するとは思わない。certhash証明書自体のフィールドから取得できますがThumbnail、ハッシュ内のスペースを削除する必要があります。

    netsh http add sslcert ipport=0.0.0.0:44300 appid={AnyGuid} certhash=YourCertificateThumbprint

于 2011-12-14T13:22:04.823 に答える
7

私がこの答えで言っていたように:

SSL / TLSを安全にするには、少なくとも3つのポイントが必要です。

  • 適切な暗号スイート、および成功したハンドシェイク。
  • クライアントがサーバー証明書を信頼していることを確認します(通常、PKIモデルの既知のCAを介して)。
  • 証明書がクライアントが接続しようとしているサーバーに属していることを確認します(ホスト名の確認)。

2番目と3番目のポイントは、証明書によって適用されます。3番目のポイントであるホスト名の検証に関して問題が発生しています。

自己署名証明書を使用することは、CA(PKIの一部)によって発行された証明書を使用する代わりになります。これにより、証明書の内容が本物であると信頼できるかどうかがわかります(発行者が主張しているとおり)。自己署名証明書を発行して使用することにより、その内容を自分で主張します。あなたのクライアントはあなたが言っていることを明確に信頼しなければなりません。これは、自己署名証明書を信頼できる証明書としてインストールするようにクライアントを説得できる小規模な展開では問題ありません。

この後、ホスト名の確認は必須の手順です。パスポートを使用して誰かの身元を確認する場合、それがあなたが認識している国の本物のパスポートであるかどうかを確認するだけでは不十分です。また、写真が目の前の人と一致することを確認する必要があります。ここでも同じことが当てはまります。接続する対象にはホスト名(またはIPアドレス)が与えられ、提示された証明書のホスト名(またはIPアドレス)と一致する必要があります。

もちろん、localhost「私」と言っているように、ローカルマシン自体からのみアクセスできます。 サーバーとして、クライアントがあなたに電話をかける名前である証明書の名前が必要です。 通常、これはIPアドレスではなくホスト名を使用して行う方が適切です。RFC 2818によると、IPアドレスを使用する場合は、サブジェクト代替名拡張機能にも含める必要があることに注意してください(ただし、一部のブラウザーはその要件に柔軟に対応します)。

(この回答にも興味があるかもしれません。Javaサーバーに関するものですが、証明書の検証はクライアントに任されているため、原則は同じです。クライアントはどの言語でもかまいません。)

編集:(最初の質問の大部分を削除したので、上記の私の答えは完全には意味がないかもしれません...)

つまり、はい、IPアドレスでマシンを識別する証明書を生成できます。

理論上(RFC 2818)、IPアドレスは証明書のサブジェクト代替名(SAN)拡張に含まれている必要があります(「DNS」ではなく「IP」タイプのSANになります)。ただし、実際には、仕様のこの特定のセクションは大まかにしか従わないため、サブジェクトDNの共通名(CN)にIPアドレスを含めることをお勧めします。ブラウザがRFC2818を十分に実装できない場合はCN=your.ip.address、SANエントリを必要とせずに、サブジェクトDNでのみ使用することを回避できる場合もあります。(Javaクライアントはこれに厳密であるように見えますが、これはテストケースでは必要ない場合があります。)

証明書を何で生成するのかわかりません。makecert.exe残念ながら、SANで証明書を生成できないようです。

この場合、たとえばOpenSSLを使用して自己署名証明書を生成できます(この回答の下部にある注を参照してください)。必要に応じて、PKCS#12を作成します(秘密鍵からの拡張子.pfxまたはファイルと生成された証明書( )。その後、ファイル内の証明書をIISExpressに構成することを検討します。証明書と秘密鍵をにインポートする必要があります。証明書ストア(ほとんどの場合、ダブルクリックすると右側のダイアログが表示されます)、それを使用します(CAからのものであるかのように)。IISの構成方法によっては、関与する必要がある場合があります。ここにチュートリアル:.p12openssl pkcs12 -export -in cert.pem -inkey privkey.pem -out store.pfx.pfxnetshhttp://blogs.blackmarble.co.uk/blogs/rfennell/post/2011/03/22/how-to-expose-iis-express-to-external-network-connections-and-use-a-non- self-signed-certificate.aspx (コマンドは、@ MrZombieが言及したこの質問netshにもリストされています。インストールされている証明書を調べて自己署名証明書のハッシュを見つけ、セットアップに応じてポート番号を調整する必要があります。 )。

于 2011-12-13T20:05:58.173 に答える
-1

私が問題を理解している限り、あなたの証明書が実際の信頼性のある認証局によって発行されない限り、あなたはエラーを受け取り続けるでしょう。

(「信頼できる認証局」とは、「証明書を購入する場所」を意味します)

http://www.gerv.net/security/self-signed-certs/<-この件について興味深い記事を読んでください。

于 2011-12-13T19:22:28.080 に答える