eua*_*ano 18 ssl curl centos windows-7
我有一个远程Windows 7服务器,只能通过端口768上的HTTPS访问.服务器使用来自本地CentOS服务器中列出的CA的签名证书.
每当我尝试使用以下命令通过cURL访问远程服务器时,它会出现如下错误:
[usr@serv certs]# curl -3 -v https://1.1.1.1:768/user/login
* About to connect() to 1.1.1.1 port 768 (#0)
* Trying 1.1.1.1... connected
* Connected to 1.1.1.1 (1.1.1.1) port 768 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* NSS error -5961
* Closing connection #0
* SSL connect error
curl: (35) SSL connect error
Run Code Online (Sandbox Code Playgroud)
(请注意,出于安全原因,IP地址已被隐藏).
我正在运行以下版本的cURL:
curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
Run Code Online (Sandbox Code Playgroud)
值得注意的是,这是在另外两个运行Windows XP而不是Windows 7的远程服务器上运行.
我试图强制cURL使用SSLv3(使用-3标志和-SSLv3标志)但没有成功.
我刚刚在运行Raspbian的Raspberry Pi上测试了相同的CURL命令,并且能够成功连接.因此,我认为在CentOS服务器上使用的cURL版本可能存在问题.raspberry pi运行以下版本:
curl 7.26.0 (arm-unknown-linux-gnueabihf) libcurl/7.26.0 OpenSSL/1.0.1e zlib/1.2.7 libidn/1.25 libssh2/1.4.2 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp
Features: Debug GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP
Run Code Online (Sandbox Code Playgroud)
vza*_*llo 18
curlNSS默认从"/etc/pki/tls/certs/ca-bundle.crt"PEM格式读取根CA证书.
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
Run Code Online (Sandbox Code Playgroud)
您可以通过curl选项在包含CA证书的PEM文件中指定另一个(您的)CA证书(或NSS共享数据库上的捆绑包--cacert).
如果未通过--cacert选项手动指定证书,NSS会尝试/etc/pki/nssdb自动从NSS数据库(位于)中选择正确的证书.您可以通过curl选项指定它的昵称,--cert如果密钥嵌入在证书中,这应该足够了,如果不是,您可以使用证书密钥指定PEM文件--key.如果密钥受密码短语保护,您可以通过curl选项提供密钥,--pass以便您可以使用nss-tools(yum install nss-tools)将证书导入NSS共享数据库
添加证书(通用命令行)
certutil -d sql:/etc/pki/nssdb -A -t <TRUSTARGS> -n <certificate nickname> -i <certificate filename>
Run Code Online (Sandbox Code Playgroud)
关于TRUSTARGS
指定要在现有证书中修改的信任属性,或在创建证书或将其添加到数据库时应用于证书.
每个证书有三种可用的信任类别,按此顺序表示:"SSL,电子邮件,对象签名".在每个类别位置使用以下零个或多个属性代码:
- 禁止(明确不信任)
- P值得信赖的同行
- c有效的CA.
- T值得信任的CA颁发客户端证书(暗示c)
- C受信任的CA颁发服务器证书(仅限SSL)(隐含c)
- u证书可用于身份验证或签名
- w发送警告(与其他属性一起使用,以便在该上下文中使用证书时包含警告)
类别的属性代码用逗号分隔,整个属性集用引号括起来.例如:
-t"TCu,Cu,Tuw"
信任根CA证书以颁发SSL服务器证书
certutil -d sql:/etc/pki/nssdb -A -t "C,," -n <certificate nickname> -i <certificate filename>
Run Code Online (Sandbox Code Playgroud)
导入中间CA证书
certutil -d sql:/etc/pki/nssdb -A -t ",," -n <certificate nickname> -i <certificate filename>
Run Code Online (Sandbox Code Playgroud)
信任自签名服务器证书
certutil -d sql:/etc/pki/nssdb -A -t "P,," -n <certificate nickname> -i <certificate filename>
Run Code Online (Sandbox Code Playgroud)
为SSL客户端身份验证添加个人证书和私钥
pk12util -d sql:/etc/pki/nssdb -i PKCS12_file_with_your_cert.p12
Run Code Online (Sandbox Code Playgroud)
列出存储在NSS DB中的所有证书
certutil -d sql:/etc/pki/nssdb -L
Run Code Online (Sandbox Code Playgroud)
列出证书的详细信息
certutil -d sql:/etc/pki/nssdb -L -n <certificate nickname>
Run Code Online (Sandbox Code Playgroud)
删除证书
certutil -d sql:/etc/pki/nssdb -D -n <certificate nickname>
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
我最近在CentOS 6盒子里遇到了同样的问题.事实证明,服务器已经有一段时间没有更新了,NSS版本太旧了.通过更新curl和NSS修复:
yum update -y nss curl libcurl
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
69992 次 |
| 最近记录: |