将 crt 和 key openvpn 文件转换为 ovpn

将 crt 和 key openvpn 文件转换为 ovpn

我收到了一些文件,要求我连接到工作中的 OpenVPN 服务器。我以前也这样做过,但我有一个 .ovpn 文件,这很容易。现在文件 ( ca.crt1ta.keyclientHome.crtclientHome.key) 让我很困惑。

有没有办法将所有这些文件转换为单个 .ovpn 文件?

答案1

我建议你按照 Digital Ocean 教程进行操作这里. 从步骤 4 开始 - 为客户端设备创建统一的 OpenVPN 配置文件。

该过程的摘要-

  1. 编辑 .ovpn 文件以包含你的服务器地址
  2. 将 ca.crt、client1.crt 和 client1.key 文件的内容直接粘贴到 .ovpn 配置文件中
  3. 按照列表进行一些其他小修改

答案2

我创建了以下脚本(脚本的 GitHub Gist 链接)适用于我的配置:

import sys, os

ALLOW_FILE_OPTIONS = ["ca", "cert", "dh", "extra-certs", "key", "pkcs12", "secret", "crl-verify", "http-proxy-user-pass", "tls-auth", "tls-crypt"]

filepath = sys.argv[1]

output_file = os.path.basename(filepath). replace(".conf", ".ovpn")

inline_tuples_to_add = []

with open(output_file, 'w') as dst:
    with open(filepath) as src:
        for l in src:
            option = l.split()
            if len(option) >= 2 and option[0] in ALLOW_FILE_OPTIONS and os.path.isfile(option[1]):
                inline_tuples_to_add.append((option[0], option[1]))
                continue

            dst.write(l)

    dst.write("key-direction 1\n\n") # needed fot tls-auth

    for t in inline_tuples_to_add : 
        tag_begining = "<{}>\n".format(t[0])
        dst.write(tag_begining)
        with open(t[1]) as tag_cpntent_file:
            dst.writelines(tag_cpntent_file.readlines())
        tag_ending = "</{}>\n\n".format(t[0])
        dst.write(tag_ending)

运行示例:

python convert_openvpn_conf_file_to_ovpn_file.py /etc/openvpn/client.conf

这将在当前工作目录中创建一个 .ovpn 文件

相关内容