一. 前言
在前一篇文章OpenVPN SSL/TLS方式连接中,客户端需要用到配置文件,根证书ca.crt,客户端证书client.crt和客户端的私钥client.key文件,用到的文件有些多了,不方便管理,是不是可以把它们都集中在一个文件管理呢?是可以的。OpenVPN为了方便用户管理文件,支持将根证书,证书,密钥文件等文件集成在配置文件中,这种方式就是OpenVPN的内联文件。
二. OpenVPN的內联文件
OpenVPN支持将--ca(根证书),--cert(服务端或客户端证书),--dh(秘钥交换参数文件),--extra-certs(其他的证书文件,证书链中证书不止根证书情况),--key(私钥文件),--pkcs12(pkcs12文件),--secret(静态秘钥文件),--tls-auth(TLS过程之前额外的认证)等等。
每个内联文件都是以<option>开始,以</option>结束。例如,--ca选项则是以<ca>开始,以</ca>结束,举例如下:
<ca>
-----BEGIN CERTIFICATE-----
......
-----END CERTIFICATE-----
</ca>
三. 举例
下面就以OpenVPN SSL/TLS方式连接例子中的配置文件,根证书,证书和私钥文件,修改为使用内联文件的方式,下面就以客户端的配置文件来举例如下:
dev tun
proto udp
tls-client
remote 192.168.5.100 1194
ifconfig 10.8.0.2 10.8.0.1
verb 3
;ca ca.crt
<ca>
-----BEGIN CERTIFICATE-----
......
-----END CERTIFICATE-----
</ca>
;cert client.crt
<cert>
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
c6:d6:5f:7e:13:55:b9:b6:56:ff:d5:e4:a1:d3:44:4f
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=Easy-RSA CA
Validity
Not Before: Dec 28 12:00:18 2023 GMT
Not After : Apr 1 12:00:18 2026 GMT
Subject: CN=client
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
......
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Subject Key Identifier:
68:DD:09:A4:15:31:7B:32:06:46:91:6A:50:5D:22:4C:3A:C6:FD:D3
X509v3 Authority Key Identifier:
keyid:A0:7F:02:8A:90:67:12:FC:DE:00:AB:E2:20:95:12:77:10:7A:65:0D
DirName:/CN=Easy-RSA CA
serial:EC:2C:80:92:EA:81:7D:C6
X509v3 Extended Key Usage:
TLS Web Client Authentication
X509v3 Key Usage:
Digital Signature
Netscape Comment:
Easy-RSA (3.0.8) Generated Certificate
Netscape Cert Type:
SSL Client
Signature Algorithm: sha256WithRSAEncryption
......
-----BEGIN CERTIFICATE-----
......
-----END CERTIFICATE-----
</cert>
;key client.key
<key>
-----BEGIN PRIVATE KEY-----
......
-----END PRIVATE KEY-----
</key>
status openvpn-status.log
log openvpn.log
在以上例子中,根证书ca.crt,客户端证书client.crt和客户端私钥client.key都通过内联文件选项包含在配置文件中。这样,用户只需要保存一个配置文件即可,增加了便利性。
四. 总结
本文介绍了OpenVPN的内联文件的使用方式,内联文件的优点是只需要维护一个配置文件,减轻了用户维护配置的难度。