この記事は
自己署名証明書、いわゆるオレオレ署名/オレオレ証明書とよばれるものを作成する手順のメモ。
対象環境
- 2025.01.18記
- Windows 11
- Visual Studio 2022 Community
1.【共通初期処理】
-
コマンドプロンプトを管理者権限で起動する
-
各種Pathを通すため、開いたコマンドプロンプトで以下のバッチを実行する
C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat
- Visual Studio 2019以前の場合だと以下を実行する
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\vsvars32.bat
- Visual Studio 2019以前の場合だと以下を実行する
-
作業フォルダに移動する
cd /d (作業フォルダ)
2.【認証局(Root)証明書の作成】
-
ルート証明書用のセキュリティ証明書ファイル(.cer)と秘密鍵ファイル(.pvk)を作成する
makecert -n "CN=(名前) Root CA,O=(名前),C=JP" -r -cy authority -a sha256 -eku 1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2,1.3.6.1.5.5.7.3.3,1.3.6.1.5.5.7.3.4 -sv (名前)RootCA.pvk (名前)RootCA.cer
makecert -n "CN=(名前) Root CA,O=(名前),C=JP" -r -cy authority -a sha256 -eku 1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2,1.3.6.1.5.5.7.3.3,1.3.6.1.5.5.7.3.4 -sv (名前)RootCA.pvk (名前)RootCA.cer
-
(名前) の部分は変えてください
-
ekuオプションには、このルート証明書から派生して作成する予定の証明書の種類を指定する
作成する証明書の種類 eku サーバー認証 1.3.6.1.5.5.7.3.1 クライアント認証 1.3.6.1.5.5.7.3.2 コード署名 1.3.6.1.5.5.7.3.3 メールの保護 1.3.6.1.5.5.7.3.4
-
-
cerファイルとpvkファイルが出来上がる
- (名前)RootCA.cer
- (名前)RootCA.pvk
2.1. 【オレオレ署名を有効にする】
- 作成した cer ファイルを "信頼されたルート証明機関" にインストールする
ルート証明書を "信頼されたルート証明機関" にインストールすることで以降の手順で作成する各証明書が有効な証明書として認識されます。
-
【署名するPC】
証明書をインストールする必要はありません -
【署名されたファイルを使用するPC】
ルート証明書を信頼できるルート証明機関にインストールする必要があります
3. オレオレコード署名
3.1. 【コード署名証明書の作成】
-
コード署名用のセキュリティ証明書ファイル(.cer)と秘密鍵ファイル(.pvk)を作成する
makecert -n "CN=(名前) Code Signing,O=(名前),C=JP" -a sha256 -eku 1.3.6.1.5.5.7.3.3 -sv (名前)CodeSigning.pvk -ic (名前)RootCA.cer -iv (名前)RootCA.pvk (名前)CodeSigning.cer
-
cerファイルとpvkファイルが出来上がる
-
X.509形式のセキュリティ証明書ファイル(.cer)をラッピングし、ソフトウェア発行元証明ファイル(.spc)に変換する
cert2spc (名前)CodeSigning.cer (名前)CodeSigning.spc
-
秘密鍵ファイル(.pvk)とソフトウェア発行元証明ファイル(.spc)を電子証明書キーペアファイル(.pfx)にパッケージング
pvk2pfx -pvk (名前)CodeSigning.pvk -spc (名前)CodeSigning.spc -pfx (名前)CodeSigning.pfx -f /po (pfxにパスワードをつける)
-
コード署名用の cer, pvk, spc, pfx が出来上がる
- (名前)CodeSigning.cer
- (名前)CodeSigning.pvk
- (名前)CodeSigning.spc
- (名前)CodeSigning.pfx
3.2.【ファイルに署名する方法】
- 署名する
signtool.exe sign /fd sha256 /f (名前)CodeSigning.pfx /p (pfxのパスワード) /td sha256 /tr http://timestamp.digicert.com?alg=sha256 /v (署名するファイル).exe
4. オレオレサーバー署名
4.1.【サーバー証明 兼 メール保護 証明書の作成】
-
サーバー証明用 兼 メール保護用のセキュリティ証明書ファイル(.cer)と秘密鍵ファイル(.pvk)を作成する
makecert -n "CN=TakumiSoft68 Server and Mail CA,O=TakumiSoft68,C=JP" -a sha256 -eku 1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.4 -sv TakumiSoft68Server.pvk -ic TakumiSoft68RootCA.cer -iv TakumiSoft68RootCA.pvk TakumiSoft68Server.cer
-
cerファイルとpvkファイルが出来上がる
-
秘密鍵ファイル(.pvk)とセキュリティ証明書ファイル(.cer)を電子証明書キーペアファイル(.pfx)にパッケージング
pvk2pfx -pvk (名前)Server.pvk -spc (名前)Server.cer -pfx (名前)ServerCA.pfx -f /po (pfxにパスワードをつける)
-
サーバー署名用の cer, pvk, pfx が出来上がる
- (名前)Server.cer
- (名前)Server.pvk
- (名前)Server.pfx
4.2 【オレオレ署名付きCSR を作成】
-
CSRファイル を作成
-
(名前)Server.cer から (名前)Server.cer.pem を作成
-
秘密鍵ファイル(pvk)から(key)形式を作成
- 直接行う方法が見つからなかったので、いったんpfxを作成し、openssl でkeyファイルを抜き出す
- openssl が使えるようにする
- 秘密鍵ファイル(pvk)を(key)形式に変換
openssl pkcs12 -in (名前)Server.pfx -nocerts -nodes -out (名前)Server.pvk.key
- (名前)Server.pvk.key をテキストエディタで開き、
-----BEGIN PRIVATE KEY-----
より前のヘッダー部分を削除して (名前)Server.pvk.key.pem として保存する
-
csrに署名する
openssl x509 -req -CA (名前)Server.cer.pem -CAkey (名前)Server.pvk.key.pem -CAcreateserial -in (名前)Server.csr.pem -out (名前)Server.crt.pem -days 3650
- (名前)Server.cer.srl と (名前)Server.crt.pem が作成される
以下のページを参考にしました。