LoginSignup
0

More than 5 years have passed since last update.

windowsサーバーに構築したプライベート認証局の電子証明書を自動生成したい

Last updated at Posted at 2018-12-03

プライベート認証局のPKI自動生成に用いたスプリクトに関して

windowsサーバーに構築したプライベート認証局の電子証明書を自動生成したいとユーザーより相談がありその際以下のスプリクトを作成しましたので備忘の意味で残します。

■プライベート認証局とは

認証局とは、デジタル証明書を発行する機関でプライベート認証局とは
会社など限られた組織内でのみ運用する認証局です。

■要件

Activedirectoryを作成しているユーザーアカウントに対してプライベート認証局の電子証明書を作成したい。

■準備するもの

•create_and_exportpfx.ps1・・・スクリプト本体
•sample.inf・・・CSR 構成ファイルの作成スプリクト
•userdata.txt・・・ユーザアカウントとパスワードの設定ファイル
•CSRフォルダ・・・ユーザアカウントのCSR格納フォルダ
•REQフォルダ・・・各ユーザの証明書発行要求の格納フォルダ
•PFXフォルダ・・・ 各ユーザのエクスポートした証明書

■スプリクト

1、CSR 構成ファイルの作成

構成ファイルの設定に必要な情報を収集します。サブジェクト名を完成させるため、View サーバの FQDN と、組織単位、組織、市区町村、都道府県、および国を把握しておく必要があります。

[NewRequest]
Subject = "CN=****ID"
#導入環境に適切な値に変更します。 証明を利用するホスト名
PrivateKeyArchive = FALSE
KeySpec = 1
KeyLength = 2048
SMIME = FALSE
Exportable = TRUE
Exportable = FALSE   
#秘密鍵のエクスポートする。
UserProtected = FALSE
MachineKeySet = FALSE
UseExistingKeySet = FALSE
ProviderName = "Microsoft Enhanced Cryptographic Provider v1.0"
ProviderType = 1
RequestType = PKCS10
KeyUsage = 0xa0
; CERT_DIGITAL_SIGNATURE_KEY_USAGE, CERT_KEY_ENCIPHERMENT_KEY_USAGE

[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.2
; Client Authentication

[RequestAttributes]
CertificateTemplate=ユーザー名

2、スクリプト本体作成

証明書発行要求(CSR)ファイル、サーバ証明書を発行するための署名要求(REQ)ファイル、秘密鍵をパスワードで保護しつつ証明書と一緒に格納できる証明書(PFX)ファイルを生成し指定したフォルダに保存するスプリクト、ファイル名と秘密鍵はuserdata.txtを利用する。

$CSR="CSR"
$REQ="REQ"
$PFX="PFX"

# 証明機関名
$Cert="ad.example.local\example-AD-CA" # 証明期間名

# アカウントリスト
$list="userdata.txt"

foreach ($line in Get-Content $list) {
    $ID = echo $line |  %{$_.split(" ")[0]}
    $pass = echo $line |  %{$_.split(" ")[1]}

    $(Get-Content "sample.inf") -replace "PartnerID","$ID" > $CSR\$ID.inf
    certreq.exe -new -q -f $CSR\$ID.inf REQ\$ID.req
    certreq.exe -submit -q -f -config $Cert $REQ\$ID.req tmp\$ID.cer
    certreq.exe -accept -q -f -user tmp\$ID.cer
    certutil -f -user -p $pass -exportPFX $ID $PFX\$ID.pfx

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0