较新的 OpenVPN 客户端不接受较旧的 SSL 证书

问题描述 投票:0回答:1

由于某些版本的 OpenVPN 链接到新的 OpenSSL 版本,该版本不接受旧的 p12 文件。

示例:OpenVPN 2.5.9 接受我的 p12 文件。 OpenVPN 3.0.13 不再存在了。

在 stackoverflow 上找不到这个问题,而且大多数谷歌结果都非常稀疏,没有解决方案。

因此我将提供我的小脚本来帮助我解决这个问题。

linux openssl vpn openvpn
1个回答
0
投票

正如问题中所说。这个脚本帮助我解决了这个问题(必须自行承担风险,并在使用之前了解脚本的作用:))。

#!/bin/bash
if [ ! $# -eq 1 ]; then
 echo "Usage: $0 old_p12_file"
 exit 1
fi
tempdir=$(mktemp -d)
tempcrt=$tempdir/$1-tmp.crt
tempkey=$tempdir/$1-tmp.key
echo "Provide Password for OLD key"
openssl pkcs12 -in $1 -out $tempcrt -nodes -nokeys -legacy
echo "Provide Password for OLD key AGAIN"
openssl pkcs12 -in $1 -out $tempkey -nodes -nocerts -legacy
echo "Provide Password for NEW key TWICE"
openssl pkcs12 -inkey $tempkey -in $tempcrt -export -out $1-new.p12
echo "Removing temp dir"
rm -rf $tempdir
echo "Done. Stored new key as $1-new.p12"

简短说明:

  • 创建一个临时目录来存储从原始p12文件中提取的密钥和证书
  • 使用 openssl 传统模式将密钥和证书提取到临时目录中
  • 将提取的证书和密钥合并到新格式的 p12 中,并在名称中添加 -new
  • 删除包含提取的密钥和证书的临时目录

脚本注意事项:

  • 询问四次密钥密码(两次用于提取,两次用于新创建的 p12 的密钥)。不过,我觉得有一些选项通过命令行参数提供密码是不对的。
  • 这只是一个linux脚本atm。如果有人对 powershell 有信心移植它,那就太棒了。
© www.soinside.com 2019 - 2024. All rights reserved.