【C#】 レスポンスから証明書を作成する

■ ポイント

証明書ファイル作成

var certificate = new X509Certificate2();
File.WriteAllBytes("Hello.cer", certificate.Export(X509ContentType.Cert));

■ トラブル

 * 以下の関連記事を参照のこと。
https://blogs.yahoo.co.jp/dk521123/36989390.html

■ サンプル

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));
        }
    }
}


関連記事

【トラブル】【C#】 ネットワーク / 証明書関連のトラブル

https://blogs.yahoo.co.jp/dk521123/36989390.html

C#】 OS内の証明書を一覧表示する

https://blogs.yahoo.co.jp/dk521123/36982549.html