C#でpfx形式の自己証明書を作成するコードを紹介します。
pfx形式の証明書を作成する一般的な方法は、OpenSSLをインストールして作成する方法がありますが、
C#のプログラムで作成する方法もあります。この記事では、C#のプログラムでpfx形式の事故証明書を作成するコードを紹介します。
Windows Formアプリケーションを作成します。
下図のフォームを作成します。
テキストボックスを3つ、複数行のテキストボックスを1つ、ボタンを1つ、SaveFileDialogを1つ配置しています。
以下のコードを記述します。
using System.Security.Cryptography.X509Certificates;
using System.Security.Cryptography;
namespace CreateCertificate
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// 鍵ペアを生成
RSA rsa = RSA.Create(2048);
// 証明書の要求を作成
string cnName = "cn=" + textBox_CNDomain.Text;
CertificateRequest request = new CertificateRequest(cnName, rsa, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
// 証明書の有効期間を設定
DateTimeOffset notBefore = DateTimeOffset.UtcNow;
DateTimeOffset notAfter = notBefore.AddYears(1);
// 証明書を自己署名で作成
X509Certificate2 certificate = request.CreateSelfSigned(notBefore, notAfter);
// PFXファイルにエクスポート
string Password = textBox_Password.Text;
byte[] pfxBytes = certificate.Export(X509ContentType.Pfx, Password);
// PFXファイルを保存
File.WriteAllBytes(textBox_FileName.Text, pfxBytes);
textBox_Output.Text += "PFXファイルが作成されました。";
}
private void button2_Click(object sender, EventArgs e)
{
if (saveFileDialog1.ShowDialog() == DialogResult.OK) {
textBox_FileName.Text = saveFileDialog1.FileName;
}
}
}
}
2048ビット長のRSA鍵ペアを作成します。
RSA rsa = RSA.Create(2048);
証明書要求を作成します。cn名はテキストボックスに入力されたドメイン名を利用します。
証明書要求の作成の詳細についてはこちらの記事も参照してください。
string cnName = "cn=" + textBox_CNDomain.Text;
CertificateRequest request = new CertificateRequest(cnName, rsa, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
証明書の有効期間の日付を設定します。今回は1年としています。
DateTimeOffset notBefore = DateTimeOffset.UtcNow;
DateTimeOffset notAfter = notBefore.AddYears(1);
X509証明書を自己署名で作成します。
X509Certificate2 certificate = request.CreateSelfSigned(notBefore, notAfter);
作成した証明書をエクスポートしてバイト配列を取得します。パスワードはエクスポートの際に設定します。
string Password = textBox_Password.Text;
byte[] pfxBytes = certificate.Export(X509ContentType.Pfx, Password);
証明書をファイルに保存し、メッセージを出力します。
File.WriteAllBytes(textBox_FileName.Text, pfxBytes);
textBox_Output.Text += "PFXファイルが作成されました。";
プロジェクトを実行します。下図のウィンドウが表示されます。
保存先のパスやドメイン名を設定し、[証明書の作成]ボタンをクリックします。
証明書が作成され"PFXファイルが作成されました"のメッセージがテキストボックスに表示されます。
保存先のディレクトリに証明書ファイルが作成されています。
証明書を開いて内容を確認します。自己署名の証明書のため、ルート証明書が設定されていないことが確認できます。
X509のpfx形式の自己証明書を作成できました。