今天遇到个实际的需求,最后决定把某个远程内网的虚拟机上的测试服务器给映射到公网上来,想到多年前就用过OpenVPN来做这个事情,所以翻看了一下http://flashing.iteye.com/blog/575402 以前的文章,按说照做即可,结果很悲桑的发现...things changed~
其实主要原因是Centos 7移除了Openssl的MD5支持(听了一年关于centos7的各种吐槽,但是自己没实际用,这马上就掉到坑里了),但是windows/ubuntu(使用14.04LTS测试),openssl仍然默认以md5作为散列算法并且可以正确识别md5散列算法,所以就悲剧了,只有cenots7不好用。关键是这个错误是大错误被小错误还掩盖了一下,所以很难被发现。
错误关键词:
A: VERIFY ERROR: depth=1, error=certificate is not yet valid
or error 9 at 1 depth lookup:certificate is not yet valid
B: VERIFY ERROR: depth=0, error=certificate signature failure
C: error 7 at 0 depth lookup:certificate signature failure
先把这些给装上:
sudo yum update
sudo yum install -y wget ntp ntpdate openvpn easy-rsa bridge-utils
解决A:
首先错误A是因为centos7默认安装(没有桌面)的情况下timezone没设置对并且时间没有校对,导致服务器时间还没到证书的签名时间,所以需要从新设置一下timezone并校对时间:
sudo timedatectl set-timezone Asia/Shanghai
sudo ntpdate time.windows.com&
sudo systemctl enable ntpd
sudo systemctl start ntpd
sudo timedatectl set-ntp true
然后执行date命令看看时间是否正确,执行timedatectl看看设置的时区等信息是否正确,ntp是否开启。
Local time: Thu 2015-10-15 12:37:25 CST Universal time: Thu 2015-10-15 04:37:25 UTC Timezone: Asia/Shanghai (CST, +0800) NTP enabled: yes NTP synchronized: no RTC in local TZ: no DST active: n/a
对于B和C,有两个问题需要解决。
第一是生成证书时候的Common Name其实是不能重复的,ca的,server的以及每个client的common都必须是唯一的,虽然校验与否是openssl的事情,大多数情况可能重复了也没问题,但是仍然建议不要重复。
Whatever method you use to generate the certificate and key files, the Common Name value used for the server and client certificates/keys must each differ from the Common Name value used for the CA certificate. Otherwise, the certificate and key files will not work for servers compiled using OpenSSL.
第二是最终问题,也就是centos7下面的openssl不支持md5,校验可以通过下面的命令:
openssl verify -CAfile ca.crt -purpose sslclient weblogic.crt
或者直接
openssl verify -CAfile ca.crt weblogic.crt
服务器当然就是
openssl verify -CAfile ca.crt -purpose sslserver server.crt
可以看到windows/ubuntu下都可以成功显示OK,centos 7则报告错误,这是openvpn报告:
error:0D0C50A1:asn1 encoding routines:ASN1_item_verify:unknown message digest algorithm:a_verify.c:179: 错误的根源。
仍然有两种方法来解决,第一是通过环境变量打开centos7下的openssl对md5的支持:
然而我这么做并未成功,主要是如果是在shell里面,su添加环境变量之后,
sudo openvpn --config /etc/openvpn/client.ovpn
是可以成功的,原因是这都是root的变量,但是centos7(7.1)的服务模式,按照原文添加在NetworkManager里面,并未生效,原因未知。
考虑到这种情况主要是之前已经有了多个证书的情况才需要仔细考虑兼容,我的情况是从新发布证书,所以果断放弃研究这个分支,不再使用md5,改用其他散列算法从新生成证书。
因为我对openssl不熟悉,也不知道在哪里设置md算法easy-rsa才可以识别,碰巧搜到github的一个patch的diff,才明白原来是在openssl.cnf里面设置。
cenots在/usr/share/easy-rsa/2.0/下面,windows就在openvpn目录里面,把windows里面openssl-1.0.0.cnf内容当中的
default_md = md5 # use public key default MD
改为
default_md = sha256 # use public key default MD
看了一下centos的easy-rsa默认设置,也是sha256,这把放心了。
然后从新生成了所有的证书,放入centos下面经过测试之后好用了。成功拨号之后ifconfig可以看到有tap0设备。
附1:几个安装的参考网址,有的有用有的没用(其实按照easy-rsa下面的readme.txt操作即可并不麻烦,当然需要改一下vars的变量设置):
http://flashing.iteye.com/blog/575402
http://www.cnblogs.com/szzchristy/p/3491757.html
https://www.digitalocean.com/community/tutorials/how-to-setup-and-configure-an-openvpn-server-on-centos-7
http://www.server-world.info/en/note?os=CentOS_6&p=openvpn
附2:centos 7 linux下面启动openvpn
拷贝client.ovpn(或者server.opvn,我这里是linux做客户端,所以是起名client.ovpn),ca.crt, 客户端证书crt文件和key文件到/etc/openvpn
sudo openvpn --config /etc/openvpn/client.ovpn
可以直接连接用作测试,如果成功,可以安装为服务
先把/etc/openvpn/client.ovpn复制为/etc/openvpn/client.conf
sudo systemctl enable openvpn@client.service
sudo systemctl start openvpn@client.service
这里@是指/etc/openvpn下面对应的conf文件名
当然停止和注销服务就是
sudo systemctl stop openvpn@client.service
sudo systemctl disable openvpn@client.service
查看服务状态是
sudo systemctl status openvpn@client.service
相关推荐
总结来说,这个资源为在CentOS7上使用OpenSSL 3.0提供了便捷的途径,无论是开发新应用还是升级现有系统,都可以直接利用这些预编译的库。然而,用户在使用时仍需注意兼容性问题,确保所有依赖项和配置都与OpenSSL ...
总结来说,升级CentOS 7上的OpenSSL和OpenSSH涉及到下载源码、编译、安装、更新系统链接以及重启服务。这个过程虽然复杂,但却是确保系统安全的重要步骤。务必在有经验的情况下进行,或者在有备份的前提下,以避免...
适用于 centos7.x 已经编译为二进制 对老版本的关键二进制文件sshd、sftp、scp、openssl进行了备份 升级前,自动打开一个端口为2222的老版本的sshd服务,你可以连接那个2222的服务,以防死翘翘。 对sshd_config进行...
在本场景中,我们讨论的是 OpenSSL 的版本 1.1.1m,在 CentOS 7 系统上的 RPM 包安装。RPM(Red Hat Package Manager)是基于 Linux 的软件包管理器,用于简化软件的安装、升级和卸载过程。 标题中的 "openssl-...
openssl-1.1.1k-1.el7.centos.x86_64 openssl-debuginfo-1.1.1k-1.el7.centos.x86_64 openssl-devel-1.1.1k-1.el7.centos.x86_64 openssl CentOS7安装包,解决CVE-2021-3450和CVE-2021-3449
在IT行业中,操作系统和安全软件的及时更新至关重要,特别是对于服务器环境。本主题涉及的是如何在没有网络连接的情况下,对CentOS7系统进行openssl和...同时,这个过程也锻炼了系统管理员的动手能力和问题解决能力。
CentOS 7作为一款广泛使用的Linux发行版,其安全服务主要依赖于OpenSSH和OpenSSL。本文将深入探讨如何在CentOS 7上进行OpenSSH 9.1和OpenSSL 1.1.1q的离线安装,并解释这两个组件的重要性及其更新过程。 OpenSSH是...
操作系统:CentOs7安静 OpenSSL Version:openssl-1.0.2j.tar.gz 目前版本最新的SSL地址为http://www.openssl.org/source/openssl-1.0.2j.tar.gz 1、将下载的压缩包放在根目录, 2、在文件夹下解压缩,命令:tar ...
核弹级漏洞修复,ssh升级至最新版本,详细操作,无坑,超级详细
centos7 openssl升级rpm包,openssl-1.1.1o-1.el7.x86_64.rpm
关于openssl centos7.4.1708相关rpm包
在CentOS 7中,OpenSSH和OpenSSL默认的版本可能较旧,为保证系统的安全性,及时升级这些组件至关重要。升级过程通常涉及到下载新版本的源代码、编译安装以及配置系统服务等步骤。这个名为"centos7 升级openssh9.0、...
脚本特点: 1、同时升级openssh与openssl,采用rpm包形式,一键快速升级...注意:centos7.x版本默认openssl版本使用1.1.1x版本,但是1.1.x版本也已停止维护了,可选使用3.0.x TLS长期支持版本及后续版本进行构建rpm包
首先备份原有库文件在进行卸载升级 cp /usr/bin/openssl /usr/bin/openssl-1.0.2k cp /usr/lib64/libcrypto.so....卸载openssh和openssl,包括openssl-libs 然后解压安装 如有lib库文件异常,使用备份的库文件直接恢复
这里是Linux Centos下升级Openssl使用的所有依赖包,当然也是Nginx或者Keepalived安装所需要的依赖包。按需使用。
漏扫报告中提示ssl、ssh版本有漏洞,本文档主要介绍在CentOS7中升级openssl、openssh步骤,经亲自测试可用,所有安装包通过网络下载源码,编译安装进行升级。
openssl-1.0.2k-16.el7.x86_64 openssl-devel-1.0.2k-16.el7.x86_64 openssl-libs-1.0.2k-16.el7.x86_64 pcre-devel-8.32-17.el7.x86_64 zlib-1.2.7-18.el7.x86_64.rpm zlib-devel-1.2.7-18.el7.x86_64 ntp-4.2.6p5-...
压缩包内包含openssl1.0.2的安装包及全部依赖环境,下载openssl最新版可到官网http://www.openssl.org/source/下载,然后安装此依赖包均可。没有设置下载积分,如果有积分一定是CSDN自己搞得鬼,也可在百度云盘上去...
"CentOS7安装指南" 本指南将指导您完成 CentOS 7 的安装过程,涵盖从虚拟机设置到安装完成后的基本配置。 虚拟机设置 在开始安装 CentOS 7 之前,需要设置虚拟机的网络适配器模式为“桥接模式”。这将允许虚拟机...