对于我们的站点VPN,我们想要创建一个根证书。 因此,我们可以为需要登录VPN的所有合作伙伴创建尽可能多的客户端证书。 (Azure虚拟网络)
手动完成此操作非常完美。我们生成一个作为root ca的证书(自签名)。我们可以在PowerShell中这样做:
@Test
public void testJson() {
String json = "{\n"
+ " \"name\":\"John\",\n"
+ " \"age\":30,\n"
+ " \"cars\": [\n"
+ " { \"name\":\"Ford\", \"models\":[ \"Fiesta\", \"Focus\", \"Mustang\" ] },\n"
+ " { \"name\":\"BMW\", \"models\":[ \"320\", \"X3\", \"X5\" ] },\n"
+ " { \"name\":\"Fiat\", \"models\":[ \"500\", \"Panda\" ] }\n"
+ " ]\n"
+ " }";
CarInfo carinfo = deserialise(json);
// for the above JSON this JsonPath call will return "Ford"
Assert.assertEquals(JsonPath.read(json, "$.cars[0].name"), carinfo.getCars().get(0).getName());
}
但是,我们更喜欢使用密钥保险库进行证书管理。我们的想法是使用以下命令直接在密钥库中创建证书: Add-AzureKeyVaultCertificate(私钥不可导出)
创建根证书非常有效。但我无法找到如何使用'签署新证书?关键金库中的操作。
你有关于如何做到这一点的样本吗?
答案 0 :(得分:0)
但我想基于此根目录创建客户端证书 带有天蓝色密钥保险库cmdlet的证书。这可能吗?
您的意思是要下载证书吗?如果是,我们可以使用此脚本下载它:
将私人证书下载到您的D:\ cert:
$kvSecret = Get-AzureKeyVaultSecret -VaultName 'jasontest2' -Name 'TestCert01'
$kvSecretBytes = [System.Convert]::FromBase64String($kvSecret.SecretValueText)
$certCollection = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2Collection
$certCollection.Import($kvSecretBytes,$null,[System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable)
$protectedCertificateBytes = $certCollection.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, 'test')
$pfxPath = 'D:\cert\test.pfx'
[System.IO.File]::WriteAllBytes($pfxPath, $protectedCertificateBytes)
将公共证书下载到您的D:\ cert:
$cert = Get-AzureKeyVaultCertificate -VaultName 'jasontest2' -Name 'TestCert01'
$filePath ='D:\cert\TestCertificate.cer'
$certBytes = $cert.Certificate.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Cert)
[System.IO.File]::WriteAllBytes($filePath, $certBytes)
更新:
$ certificateOperation.CertificateSigningRequest是证书的base4编码证书签名请求。
Import-AzureKeyVaultCertificate -VaultName $vaultName -Name $certificateName -FilePath C:\test\OutputCertificateFile.cer
更多信息请参阅此blog。
更新:
我们应该使用您的CA服务器的sign操作签署CertificateSignRequest。
企业证书:
如果您使用的是企业证书 解决方案,生成具有公共名称值的客户端证书 格式'name@yourdomain.com',而不是'域名\用户名' 格式。确保客户端证书基于“用户” 将“客户端身份验证”作为第一个的证书模板 使用列表中的项目,而不是智能卡登录等。您可以检查 通过双击客户端证书并查看证书 详细信息>增强的密钥用法。
答案 1 :(得分:0)
请参阅"手动创建证书并由CA签署" https://blogs.technet.microsoft.com/kv/2016/09/26/get-started-with-azure-key-vault-certificates/
中的部分