Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
21
Help us understand the problem. What is going on with this article?
@sat0tabe

自己署名証明書の作り方がいつの間にか変わっていました

PowershellDSCでAzureManagementAPIを証明書認証で利用していて、今回新たに環境構築していました。

その際に、windowsのPCで自己署名証明書を作成したかったのですが、
以前はmakecertを使用していましたが、いつの間にか使用できなくなっていたのであたらしいやり方でやってみようと思います。

以前のやりかた

makecertで証明書を作成し、パスワードを設定してエクスポートするというやりかたです。

まずは、

証明書を作成します。
cmdで実行します。

"C:\Program Files (x86)\Windows Kits\8.1\bin\x86\makecert.exe" -sky exchange -r -n "CN=AzureManagementAPI" -pe -a sha256 -len 2048 -ss My "AzureManagementAPI.cer"

次に

パスワードを作成しておきます。
ここからはpowershellで実行します。

$MyPwd = ConvertTo-SecureString -String "パスワード" -Force ?AsPlainText

先ほど作成した証明書を探します。

$AzureCert = Get-ChildItem -Path Cert:\CurrentUser\My | where {$_.Subject -match "AzureManagementAPI"}

最後に

証明書をエクスポートします

Export-PfxCertificate -FilePath C:\AzureManagementAPI.pfx -Password $MyPwd -Cert $AzureCert

ポータルへアップロード

エクスポートしたファイルをAzureポータルにアップロードして完了です。

あたらしいやり方

まずは

証明書作成

makecertの代わりになるのがNew-SelfSignedCertificateのようです。
New-SelfSignedCertificateを実行して証明書を作成します。

$cert = New-SelfSignedCertificate -DnsName AzureManagementAPI -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(1)

次に

パスワード作成

$password = ConvertTo-SecureString -String "パスワード" -Force -AsPlainText

最後に

エクスポートします。

pfxでエクスポートする場合は以下を実行

Export-PfxCertificate -Cert $cert -FilePath "C:\azuremanagementapi.pfx" -Password $password

または、cerでエクスポートする場合は以下を実行

証明書をAzure管理ポータルで使用する場合は以下を実行します。

Export-Certificate -Type CERT -Cert $cert -FilePath C:\azuremanagementapi.cer

アップロード

上記で作成したcerファイルの方の証明書をAzureのポータルへアップロードすることで
AzureManagementAPIを利用することができるようになります。

以上です。

最後にシェルの全文を載せておきます。
信頼されたルートへは一旦ファイルへ掃き出しインストールするようになっています。


$DnsName = "AzureManagementAPI"
$NotAfter = (Get-Date).AddHours(1)
$passwordString = "password"
$filename = "mycert"

$CertDir = "C:\"
$pfxFileName = $CertDir + $filename + ".pfx"
$cerFileName = $CertDir + $filename +  ".cer"
$cert = New-SelfSignedCertificate -DnsName $DnsName -CertStoreLocation "cert:\CurrentUser\My" -NotAfter $NotAfter -KeyAlgorithm RSA
#PFX形式
$password = ConvertTo-SecureString -String $passwordString -Force -AsPlainText
Export-PfxCertificate -Cert $cert -FilePath $pfxFileName -Password $password
Import-PfxCertificate -Password $password -FilePath $pfxFileName -CertStoreLocation "cert:\CurrentUser\Root"

#CER形式
#Export-Certificate -Type CERT -Cert $cert -FilePath $cerFileName
#Import-Certificate -FilePath $cerFileName -CertStoreLocation "cert:\CurrentUser\Root"

参考

https://docs.microsoft.com/ja-jp/azure/cloud-services/cloud-services-certs-create#what-are-management-certificates
https://docs.microsoft.com/ja-jp/azure/azure-api-management-certs

21
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
sat0tabe
フルスタックエンジニア/ソリューションアーキテクト C#/Azure/ReactNative/SQLServer/Oracle/Java/Windows/VB/Powershell

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
21
Help us understand the problem. What is going on with this article?