■ ポイント
証明書ファイル作成
var certificate = new X509Certificate2(); File.WriteAllBytes("Hello.cer", certificate.Export(X509ContentType.Cert));
■ サンプル
using System; using System.IO; using System.Net; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Windows.Forms; namespace SampleDemo { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://yahoo.co.jp"); // Proxyサーバ・ユーザ認証を使用している場合 //request.Proxy.Credentials = new NetworkCredential("user_name", "password"); using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { // Do Nothing } var certificate = new X509Certificate2(request.ServicePoint.Certificate); var stringBuilder = new StringBuilder(); // X.509v3証明書のシリアル番号 stringBuilder.Append(certificate.GetSerialNumber()); stringBuilder.Append(" "); // X.509v3証明書を発行した証明機関の名前 stringBuilder.Append(certificate.Issuer); stringBuilder.Append(" "); // X.509v3証明書のサブジェクトの識別名 stringBuilder.Append(certificate.Subject); stringBuilder.Append(" "); // X.509v3証明書のハッシュ値の16進文字列 stringBuilder.Append(certificate.GetCertHashString()); stringBuilder.Append(" "); // X.509v3証明書の発効日 stringBuilder.Append(certificate.GetEffectiveDateString()); stringBuilder.Append(" "); // X.509v3証明書の失効日 stringBuilder.Append(certificate.GetExpirationDateString()); stringBuilder.Append(" "); // X.509v3証明書のキーアルゴリズム情報 stringBuilder.Append(certificate.GetKeyAlgorithm()); stringBuilder.Append(" "); // X.509v3証明書の公開鍵 //stringBuilder.Append(certificate.GetPublicKeyString()); //stringBuilder.Append(" "); // X.509v3証明書の形式の名前 stringBuilder.Append(certificate.GetFormat()); stringBuilder.Append(" "); // X.509証明書全体の生データ //stringBuilder.Append(certificate.GetRawCertDataString()); //stringBuilder.Append(" "); stringBuilder.AppendLine(); textBox1.Text = stringBuilder.ToString(); // ファイル作成 File.WriteAllBytes("YahooDummy.cer", certificate.Export(X509ContentType.Cert)); } } }
参考文献
https://stackoverflow.com/questions/27124439/get-ssl-certificate-for-a-request* Proxyサーバ・ユーザ認証を使用している場合
https://stackoverflow.com/questions/9603093/proxy-basic-authentication-in-c-http-407-error
* 証明書ファイル作成
http://paulstovell.com/blog/x509certificate2