これは非常に良い質問です。 HttpListener
の場合と同様に、.NETにはツールまたは.configファイル(System.Configuration
を使用)が必要で、アプリケーションの構成を微調整する必要があります。多くの場合、APIは同じ目的を達成していますが、必ずしもそうではありません(この場合ではありません)。
解決策は、Monoのソースコードを参照して、HttpCfg.exe
ツールがアプリケーション用にセットアップされることを期待するものを確認することです。 githubから:
string dirname = Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData);
string path = Path.Combine (dirname, ".mono");
path = Path.Combine (path, "httplistener");
string cert_file = Path.Combine (path, String.Format ("{0}.cer", port));
if (!File.Exists (cert_file))
return;
string pvk_file = Path.Combine (path, String.Format ("{0}.pvk", port));
if (!File.Exists (pvk_file))
return;
cert = new X509Certificate2 (cert_file);
key = PrivateKey.CreateFromFile (pvk_file).RSA;
だから、解決策は、(それがDocuments
ディレクトリの下に指していますので、それが可能だ)同じディレクトリ構造を作成し、(.cer
ファイル(バイナリDERでエンコードされた証明書)と.pvk
ファイルをコピーすることですは、ファイル名としてポート番号を使用してmakecert
が作成する形式の秘密鍵です)。
これらのファイルを使用すると、HttpListener
を起動し、SSL要求を処理するために必要な証明書と秘密鍵をロードできるようになります。
にある必要があります。 MonoTouchでこれが動作していると仮定しますか?私はそれをMonodroidで動かそうとしています。私は適切な場所に証明書とpvkファイルを取得する方法を把握することはできません。私はそれらを「資産」として追加しましたが、それはうまくいかないようです。 :-( – exvance
バンドルから、またはファイルシステムから秘密鍵をダウンロードするのは簡単ではないので、HTTPSの目的を破っているのでしょうか?それとも、HTTPSの目的を破るのですか? – borrrden