繁体   English   中英

AWS VPN:如何使用 Powershell 创建和导入自签名证书

AWS VPN: How to create and import a Self-Signed certificate using Powershell

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试使用 Powershell 创建用于 AWS VPN 和 OpenVPN 的证书。 我发现文档帮助不大。 有好的网站吗?

1 个回复

使用 CreateCertificate.ps1 脚本,然后按照以下说明进行操作:

创建证书.ps1

#Run as Administrator
function PSScriptRoot()
{
    $ScriptRoot = ""

    Try
    {
        $ScriptRoot = Get-Variable -Name PSScriptRoot -ValueOnly -ErrorAction Stop
    }
    Catch
    {
        $ScriptRoot = Split-Path $script:MyInvocation.MyCommand.Path
    }

    return $ScriptRoot
}

Install-Module -Name PSPKI -Scope AllUsers 
Import-Module PSPKI


$PSScriptPath = PSScriptRoot
$certPassword = ConvertTo-SecureString -String "touchworks.VPN" -Force -AsPlainText

# Create a self-signed root certificate
$exp  = (Get-Date).AddYears(5)
$rootCert = New-SelfSignedCertificate `
            -DnsName self-service.root.clientvpn.amazonaws.com `
            -Subject "CN=AWS.VPN.Root" `
            -CertStoreLocation "cert:\LocalMachine\My" `
            -HashAlgorithm sha256 -KeyLength 2048 `
            -NotAfter $exp `
            -KeyExportPolicy Exportable -KeySpec Signature -KeyProtection None  -KeyUsageProperty All


# Create a client certificate based on the Root
$clientCert = New-SelfSignedCertificate -Type Custom -DnsName P2SChildCert `
            -Subject "CN=AWS.VPN.Client" `
            -HashAlgorithm sha256 -KeyLength 2048 `
            -CertStoreLocation "Cert:\CurrentUser\My" `
            -Signer $rootCert -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.2") `
            -KeyExportPolicy Exportable -KeySpec Signature -KeyProtection None -KeyUsageProperty All

#Export the Root certificate with Private Key
$rootCert.PSPath
$pfxFilePath = "$PSScriptPath\" + $rootCert.Subject + ".pfx"
$pemFilePath = "$PSScriptPath\" + $rootCert.Subject + ".pem"

Export-PfxCertificate -Cert $rootCert.PSPath -FilePath $pfxFilePath -Password  $certPassword 

Convert-PfxToPem -InputFile $pfxFilePath -Outputfile $pemFilePath -Password $certPassword -OutputType Pkcs1


# Export the client certificate
$rootCert.PSPath
$pfxFilePath = "$PSScriptPath\" + $clientCert.Subject + ".pfx"
$pemFilePath = "$PSScriptPath\" + $clientCert.Subject + ".pem"

Export-PfxCertificate -Cert $clientCert.PSPath -FilePath $pfxFilePath -Password  $certPassword -ChainOption BuildChain -CryptoAlgorithmOption AES256_SHA256

Convert-PfxToPem -InputFile $pfxFilePath -Outputfile $pemFilePath -Password $certPassword -OutputType Pkcs1

1. 创建证书

Run CreateCertificate.ps1

生成以下文件:根目录:CN=AWS.VPN.Root.pem

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAscrFXB0k4vVt2+4WX2f67ceWW8bL/Zxwj8VboOucAiy2RtUV
...
Pdo5MeLbJCYjZwMxZ0KuLybyl0OxkYnhYT7UNExJYgz0E87fJIFN
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIDQDCCAiigAwIBAgIQaBfHrrrdALtOxYJsf+N4UzANBgkqhkiG9w0BAQsFADAX
...
HmuJiV7KTDWGkmTVfgxP1coMr7M=
-----END CERTIFICATE-----

客户端:CN=AWS.VPN.Client.pem

-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAq6MdA2PWfsR6k2r1rT7EFgN4fGgKvRIFpTE5K7WmUDBxqSL/
...
eEM5vupZfK5F2LW4cqkFFamv93+gcgWqVo/7U9rxwQbMdBj9v2bMWQ==
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIDOzCCAiOgAwIBAgIQWzHJgWjQhoJKcnXOLno1fTANBgkqhkiG9w0BAQsFADAX
...
ORyAIYAJd3P2MIecP+NR
-----END CERTIFICATE-----

2. 使用以下命令将根证书导入AWS Certificate Manager

使用CertificateManager|导入证书

证书正文 ==> 使用根证书
证书私钥 ==> 使用 Root RS 私钥
证书链 ==> 留空

3. 使用AWS Client VPN EndpointsAWS Certificate Manager证书应用于 VPN

使用按钮客户端 VPN 端点|操作|修改客户端 VPN 端点

4. 使用AWS Client VPN Endpoints下载客户端配置 (ovpn) 文件

使用 Button客户端 VPN 端点|下载客户端配置

5.修改客户端配置(ovpn)文件

  1. Open VPN客户端中存在一个错误,它忽略了 ovpn 文件中的远程随机主机名设置。
  2. VPN 的自助服务门户不会生成可用的 ovpn 文件。

修改ovpn文件如下:

  • 将随机字符串添加到 url
  • 添加客户端证书和密钥

示例 OVPN 文件

client
dev tun
proto udp
>>> remote qwerty.cvpn-endpoint-0aae...680bf.prod.clientvpn.us-east-1.amazonaws.com 443
remote-random-hostname
resolv-retry infinite
nobind
remote-cert-tls server
cipher AES-256-GCM
verb 3
<ca>
-----BEGIN CERTIFICATE-----
MIIDQDCCAiigAwIBAgIQdn3tb5/zQJJCitV4XSxmmTANBgkqhkiG9w0BAQsFADAX
...
tx2txb5TvvJnEoRkEFlnpxmXd5U=
-----END CERTIFICATE-----

</ca>

>>> <cert>
>>> -----BEGIN CERTIFICATE-----
>>> 
>>> ***CLIENT CERTIFICATE***
>>> 
>>> -----END CERTIFICATE-----
>>> 
>>> 
>>> </cert>
>>> <key>
>>> -----BEGIN RSA PRIVATE KEY-----
>>> 
>>> ***CLIENT RSA PRIVATE KEY***
>>> 
>>> -----END RSA PRIVATE KEY-----
>>> 
>>> </key>

auth-user-pass

reneg-sec 0

6、将修改后的ovpn文件和Client分发给用户。

7. 参考文献

如何配置 Windows VPN 服务器

https://www.wintips.org/how-to-setup-vpn-server-on-windows-server-2016-pptp/

https://acloudxpert.com/generate-and-export-certificates-for-point-to-site-using-powershell/

如何使用 AWS VPN 锁定对您的服务器的访问

https://www.cloudsavvyit.com/3270/how-to-use-aws-vpn-to-lock-down-access-to-your-servers/

使用 PowerShell 创建自签名证书

https://4sysops.com/archives/create-a-self-signed-certificate-with-powershell/

2 在 AWS 中使用自签名导入证书

AWS ELB 支持拥有多个证书,我可以添加多个证书(亚马逊颁发的证书和一些由 AWS 中的私有 CA 签名的证书)。 我有一些已成功导入的自签名私有证书,并希望将它们与我的 ELB 一起使用,但证书列表未显示这些导入的证书。 我可以在 ACM(Amazon Certificate Manager ...

3 如何使用Go在Windows上使用私钥创建和存储自签名证书

我试图创建一个无需Powershell即可存储在证书存储中的自签名证书(包括私钥)。 我可以使用C使用Windows API库,但我不熟悉它们的工作方式。 我需要知道如何使用Go创建证书并将该证书存储在Windows上的证书存储中。 我尝试使用Go库构建证书,并尝试使用Windows ...

4 如何在不同的网络上创建和使用基于DNS的自签名证书

我有以下代码来创建自签名证书: 我仅添加服务器的DNS名称, 以避免绑定到当前IP地址 (测试计算机在不同网络中移动)。 事实证明,从客户端连接时,我需要使用IP地址(DNS解析在测试站点上是不可靠的)。 不幸的是,SSL连接失败并显示以下消息: (主机名192.1 ...

7 从powershell创建自签名的iis ssl证书

我需要从PowerShell脚本创建一个新的自签名IIS SSL证书,作为自动安装的一部分。 这是我尝试过的: 结果 它表示无法找到该行的New-SelfSignedCertificate。 如果我通过IIS管理器手动创建证书,其余代码工作正常。 谢谢你的帮助! ...

8 如何使用Powershell导入证书

我们正在创建一个脚本来自动创建证书。 我们能够完成所有阶段,但是当我们尝试将证书导入商店时,就会遇到问题。 证书确实已安装到WSUS -&gt; Certificate Store但未关联私钥。 如果我们手动执行,则效果很好。 以下代码代表将证书导入商店的部分: 我仍然处于p ...

9 Powershell 创建和导出根证书 PFX

如果语法不正确,请提前道歉。 这是我第一次通过证书创建。 我正在尝试使用 Powershell 创建根证书。 我正在使用以下代码: 当我运行它时,我得到:Export-PfxCertificate:无法导出不可导出的私钥。 根据处于相同情况的其他人,他们发现它本质上是一个权限问题,并通过以下 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM