AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 469409
Accepted
AAlvz
AAlvz
Asked: 2013-01-16 11:57:14 +0800 CST2013-01-16 11:57:14 +0800 CST 2013-01-16 11:57:14 +0800 CST

VPN 证书验证失败 (OpenVPN)?中央操作系统和Ubuntu

  • 772

好的,我会解释我做了什么......最后是问题。谢谢你!

为了设置我的 VPN,我在服务器和客户端机器上安装了 OpenVPN。在服务器上,我在文件 /etc/openvpn/easy-rsa/vars 中配置了证书颁发机构,编辑以下行:

export KEY_COUNTRY=”ES”
export KEY_PROVINCE=”M”
export KEY_CITY=”Madrid”
export KEY_ORG=”My Organization”
export KEY_EMAIL=”[email protected]”

然后我生成了证书:

cd /etc/openvpn/easy-rsa/ ln -s openssl-1.0.0.cnf openssl.cnf source vars ./clean-all ./build-ca

创建了服务器证书:

./build-key-server myServer

Diffie Hellman 参数到服务器

./build-dh

复制的证书和密钥 /etc/openvpn

cd keys/ cp myServer.crt myServer.key ca.crt dh1024.pem /etc/openvpn/

创建的客户端证书

cd /etc/openvpn/easy-rsa/ source vars ./build-key client1

将此证书复制到客户端计算机并从服务器中删除它们:

/etc/openvpn/ca.crt

/etc/openvpn/easy-rsa/keys/cliente.crt

/etc/openvpn/easy-rsa/keys/cliente.key

将 /etc/openvpn/server.conf 编辑为我的文件名

ca ca.crt
cert myServer.crt
key myServer.key
dh dh1024.pem

/etc/init.d/openvpn 重启

验证 tun0 在那里

ifconfig tun0

在 /etc/sysctl.conf 上启用 ip_forward 参数以便包可以流动

net.ipv4.ip_forward=1

还启用了虚拟网络屏蔽,因此客户端可以访问所有远程机器

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

并保存 ip 表 conf,这样它们就不会在重启时消失

将 conf 保存到文件中

sudo sh -c “iptables-save > /etc/iptables.rules”

编辑 /etc/network/interfaces 添加接口(本例中为 eth0)

准备 iptables-restore < /etc/iptables.rules

获取以下 server.conf

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb3

在客户端中,我安装了 OpenVPN 并使用证书编辑 /etc/openvpn 中的 client.conf 文件:ca.cert、client1.key、c​​lient1.conf 获取以下 client.conf 文件:

client
dev tun
proto udp
remote xxx.xxx.xxx.xxx 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
comp-lzo
verb 3

然后重新启动:

/etc/init.d/openvpn 重启

当我想用 ifconfig tun0 验证接口 tun0 是否存在时,却没有。

所以我检查了我的日志,在客户端机器上有错误:

VERIFY ERROR: depth=0, error=unable to get local issuer certificate: /C=Es/ST=M/L=Madrid/O=xxx/OU=xxx/CN=myServer/name=xxx/[email protected]
TLS_ERROR: BIO read tls_read_plaintext error: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
user openvpn[7984]: TLS Error: TLS object -> incoming plaintext read error
user openvpn[7984]: TLS Error: TLS handshake failed

这是服务器日志中的错误

xxx.xxx.xxx.xxx:59439 SIGUSR1[soft,tls-error] received, client-instance restarting
MULTI: multi_create_instance called
xxx.xxx.xxx.xxx:59485 Re-using SSL/TLS context
xxx.xxx.xxx.xxx:59485 LZO compression initialized
xxx.xxx.xxx.xxx:59485 Control Channel MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ]
xxx.xxx.xxx.xxx:59485 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ]
xxx.xxx.xxx.xxx:59485 Local Options hash (VER=V4): '530fdded'
xxx.xxx.xxx.xxx:59485 Expected Remote Options hash (VER=V4): '41690919'
xxx.xxx.xxx.xxx:59485 TLS: Initial packet from [AF_INET]xxx.xxx.xxx.xxx:59485, sid=0349f4d6 657535c9
xxx.xxx.xxx.xxx:59440 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
xxx.xxx.xxx.xxx:59440 TLS Error: TLS handshake failed
xxx.xxx.xxx.xxx:59440 SIGUSR1[soft,tls-error] received, client-instance restarting

我再次创建了密钥,并在 client.conf 文件中添加了证书的完整路径,但它仍然不起作用。还尝试禁用我所有的防火墙,但由于该错误仍然无法连接到我的服务器。

另一件重要的事情是我的服务器是 ubuntu 12.04 和客户端 CentOS 6.3

我可以看到我找到了我的服务器,但连接仍未完成...

我应该怎么办??

如果需要更多配置文件,告诉我给你看

certificate
  • 2 2 个回答
  • 11778 Views

2 个回答

  • Voted
  1. Best Answer
    cjc
    2013-01-16T16:34:07+08:002013-01-16T16:34:07+08:00

    您的错误消息表明客户端出于某种原因不喜欢服务器提供的证书。将 server.crt 的副本发送到客户端,然后运行:

    openssl verify -purpose any -CAfile ca.crt server.crt
    

    如果没问题,你应该得到一些看起来像的东西server.crt: OK

    基本上,您要检查 server.crt 是否由客户端上的 ca.crt 文件正确签名。您可以通过省略-CAfile ca.crt. 在这种情况下(或者如果 ca.crt 没有签署 server.crt)你会得到一些消息,比如:

    error 20 at 0 depth lookup:unable to get local issuer certificate
    

    如果是这种情况,请检查您的证书生成过程。

    • 5
  2. Carlos
    2017-04-09T08:11:10+08:002017-04-09T08:11:10+08:00

    我也有这个问题。问题是我使用的是 easyrsa 生成的 ca.crt。这是错误的。请改用 /etc/ssl/misc/demoCA/ 中的 cacert.pem。

    • 0

相关问题

  • 为 IIS 7.0 问题创建证书

  • CodeCollaborator svn 访问

  • 为 IIS6 自行生成 SSL 证书?

  • 如何模拟连接到 HTTPS 并记录握手?

  • SQL Server 2000 加密证书

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve