【问题标题】:OpenVPN revoked certifcates can still connectOpenVPN吊销的证书仍然可以连接
【发布时间】:2020-06-10 10:24:47
【问题描述】:

尊敬的 StackExchange 社区,

我有一个使用 ubuntu 16.04 运行的 OpenVPN 2.3.10 服务器,其中安装了多个客户端(〜 80)Digital Ocean tutorial。当我撤销证书时,它仍然可以像以前一样连接....

我的服务器配置:

port 1197
proto udp
dev tun3

ca ca.crt
cert server.crt
key server.key  # This file should be kept secret
dh dh2048.pem
topology subnet
server XXX.XXX.XXX.XXX XXX.XXX.XXX.XXX
local XXX.XXX.XXX.XXX

ifconfig-pool-persist ipp.txt

client-config-dir ccd
keepalive 10 120

tls-auth ta.key 0 
key-direction 0

cipher AES-128-CBC
auth SHA256

comp-lzo

user nobody
group nogroup

persist-key
persist-tun

status-version 2
status openvpn-status4.log

log-append  openvpn.server4.log

verb 3

management 127.0.0.1 5558

crl-verify crl/crl.pem

对于证书管理,我使用 easy-rsa。

cd ~/openvpn-ca

source vars

创建证书:./build-key cert_name

要吊销证书:./revoke-full cert_name 然后我将keys 目录中的crl.pem 文件复制到/etc/openvpn/crl 目录中,然后更改所有权sudo chown nobody:nogroup /etc/openvpn/crl/crl.pem

相关服务器日志:

TLS: Initial packet from [AF_INET]XXX.XXX.XXX:60341, sid=4af4c75c e17bc520
CRL: CRL crl/crl.pem is from a different issuer than the issuer of certificate C=FR, ST=company_name, L=company_name, O=company_name, OU=company_name, CN=company_name, name=server, emailAddress=admin@company.com
VERIFY OK: depth=1, C=FR, ST=company_name, L=company_name, O=company_name, OU=company_name, CN=company_name, name=server, emailAddress=admin@company.com
CRL: CRL crl/crl.pem is from a different issuer than the issuer of certificate C=FR, ST=company_name, L=company_name, O=company_name, OU=company_name, CN=client_name, name=server, emailAddress=admin@company.com
VERIFY OK: depth=0, C=FR, ST=company_name, L=company_name, O=company_name, OU=company_name, CN=client_name, name=server, emailAddress=admin@company.com

如果我这样做 ./list-crl 我可以看到我的证书确实被吊销了:

Certificate Revocation List (CRL):
        Version 1 (0x0)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: /C=FR/ST=company_name/L=company_name/O=company_name/OU=company_name/CN=test2/name=server/emailAddress=admin@company.com
        Last Update: Jun 10 09:03:59 2020 GMT
        Next Update: Jun  8 09:03:59 2030 GMT
Revoked Certificates:
    Serial Number: 02
        Revocation Date: Feb 13 15:48:55 2018 GMT
    Serial Number: 03
        Revocation Date: Feb 13 15:50:38 2018 GMT
    Serial Number: 04
        Revocation Date: Feb 13 15:58:06 2018 GMT
    Serial Number: 05
        Revocation Date: Feb 13 16:59:54 2018 GMT
    Serial Number: 06
        Revocation Date: Feb 13 17:00:01 2018 GMT
    Serial Number: 07
        Revocation Date: Feb 13 17:06:43 2018 GMT
    Serial Number: 28
        Revocation Date: Jul  9 13:24:14 2018 GMT
    Serial Number: 29
        Revocation Date: Jul  9 13:24:30 2018 GMT
    Serial Number: 32
        Revocation Date: Jun  9 07:25:35 2020 GMT
    Serial Number: 58
        Revocation Date: Jun  9 07:26:01 2020 GMT
    Serial Number: 59
        Revocation Date: Jun  9 07:26:19 2020 GMT
    Serial Number: 9B
        Revocation Date: Jun  9 15:13:52 2020 GMT
    Serial Number: 9C
        Revocation Date: Jun  9 14:47:36 2020 GMT
    Signature Algorithm: sha256WithRSAEncryption
         XXXXX

我可以在 Issuer: 块中看到一件奇怪的事情:CN=test2,但我找不到它的来源。

这种情况有点令人困惑,现在我设法通过 iptables 阻止客户端,因此它可以连接到 VPN 但无法访问任何东西,但我宁愿解决吊销问题。

你有什么想法吗?

谢谢。

【问题讨论】:

    标签: openssl ssl-certificate openvpn


    【解决方案1】:

    就我而言,我在 ubuntu 20.04 上配置了 OpenVPN 服务器。最后,我能够通过以下步骤禁用用户。

    我有两台服务器用于 OpenVPN,一台用于 OpenVPN,另一台用于 CA 配置。

    登录到第二台服务器(CA)并使用./easyrsa revoke client_name 命令吊销证书。 使用yes 确认并提供您是否有证书密码。

    使用./easyrsa gen-crl 命令生成新的CRL(证书吊销列表)。 使用 scp 命令将生成的crl.pem 复制到 OpenVPN 服务器的 tmp 目录中。

    scp ~/easy-rsa/pki/crl.pem username@your_server_ip:/tmp
    

    一旦您撤销了客户端的证书,请将 pem 文件移动到第二台服务器(openVPN 服务器)上/etc/openvpn/server 目录中的 OpenVPN 服务器。

    sudo cp /tmp/crl.pem /etc/openvpn/server/
    

    打开 OpenVPN 服务器配置文件sudo vi /etc/openvpn/server/server.conf 并在文件底部添加以下行。

    crl-verify crl.pem
    

    保存并关闭文件,重启OpenVPN服务实现证书吊销。

    sudo systemctl restart openvpn-server@server.service
    

    谢谢:)

    【讨论】:

      【解决方案2】:

      Openvpn 通常被配置为通过用户 nobody 运行,因此请确保放置 crl.pem 文件的目录可以被用户 nobody(/etc/openvpn/crl) 以及文件 crl.pem 访问用户nobody 也可以读取。 我个人建议将 crl.pem 文件放在 /etc/openvpn 中。

      【讨论】:

        【解决方案3】:

        您可以使用以下命令撤销

        cd ~/openvpn-ca
        source vars
        ./revoke-full user1
        ./revoke-full user2
        
        sudo cp ~/openvpn-ca/keys/crl.pem /etc/openvpn
        
        sudo service openvpn restart
        

        【讨论】:

          猜你喜欢
          • 2012-02-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-07-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多