コンピュータや音楽の事書いてます

コードサイニング証明書の取得の流れとトラブル解決

Visual Studio からClickonce発行したアプリが顧客先で「発行元が不明」の警告を出すのでそれを解決するため。
ここが安いみたいなので注文した。
www.thesslstore.com
Comodo Code Signing $82.5/Year

COMODOのオフィシャルから購入するのと何が違うのかは分からない。値段が全然違う。

用語を整理:

.pem 秘密鍵のファイル。 誰にも渡しちゃだめ
.csr 認証局へ依頼するときのリクエストファイル
.crt 認証局からもらう.crtファイル
.pfx Visual Studioでアプリに署名するファイル

Windowsよりも簡単そうだったので、.csrファイルをLinux上で作成して内容を申し込みページに貼り付けたがまずここで先に進まなくなった。(ブラウザで出来るというのはここでは知らなかった)

#失敗
openssl genrsa -aes256 -out ./ca-key.pem 2048
openssl req -new -key ./ca-key.pem -out ./ca-cert.csr

エラーを示す赤いマークがあるけど、エラー内容が空っぽ。
サポートにチャットで聞いたところ、「Please use key size 4096
2048 is no longer supported」とのこと。
これで成功。

openssl genrsa -aes256 -out ./ca-key.pem 4096
openssl req -new -key ./ca-key.pem -out ./ca-cert.csr

「Thanks for contacting the support team. Have a great day!」
親切なのか不親切なのか良くわからない。

すると、Sectigo APAC 日本サポートチーム からメールが来た。COMODOとSectigo がどういう関係なのかは分からない。
DUNS番号を教えてほしいとのこと。DUNS番号は東京商工リサーチに頼んで発行してもらう必要がある。
運転免許証、パスポート、またはマイナンバーカードのいずれかのコピーが必要なのでメール添付で返信。
電話認証が必要という噂だったが、その話は出てこなかった。

Your Code Signing Certificate is ready!

Dear XXXX,

Thank you for placing your order. The necessary background checks have been successfully completed and we are pleased to announce that your Code Signing Certificate has been issued.

To collect your Code Signing Certificate, please click here

Your Collection Code is: XXXXXXXXXXXXXXX

上記メールが別途きて、「here」のところをクリック。ChromeではだめでIEでやってね、ということだが、IEでやっても、

This Certificate could not be installed. Please ensure that...
- this is the same computer and web browser from which you applied for your Certificate.
- you have no deleted your Private Key.
- you have not already installed your Certificate.

が表示される。
どうやら、.csrファイル作成をブラウザに任せずに他のマシンのLinuxシェルで行ったため、「same computer」ではないのが原因のようだ。.csrファイルを作成したのはLinux上で、公式の手順ではIEを使うことになっているので、このままではインストール出来ない。
メール内のリンクをChromeで開くと、.crtファイルをダウンロード出来た。これを「same computer」であるLinuxマシンの方へコピーし、pfxファイルへ変換すれば良い。

openssl pkcs12 -export -inkey ca-key.pem -in user-pem.crt -out windows.pfx

を実行したが、
unable to load certificate
エラーとなった。
この原因はcrtファイルの中身がDER形式(バイナリ)であるため、PEM形式(秘密鍵の拡張子のことではない)に変換しなければならない。

openssl x509 -inform der -in user.crt -out user-pem.crt

openssl pkcs12 -export -inkey ca-key.pem -in user-pem.crt -out windows.pfx

これで、めでたくVisual Studioでコード署名できるwindows.pfxが出来上がった。

認証局からもらったcrtファイルの形式はこれで調べられる。

$ file user.crt //DER形式
user.crt: data

$ file user-pem.crt //PEM形式
user-pem.crt: PEM certificate