openssl证书验证-构建系统和目标系统上的不同行为(在ARM上无法正常工作)
这个故事的背景是,我将gSOAP与openssl一起用于一些SOAP/WSDL应用程序开发。最终的应用程序必须为嵌入式ARM设备进行交叉编译 在我的构建系统(Fedora 17 x64)上一切正常,但当我在目标设备(ARM/Montavista 5)上运行交叉编译版本时,我得到以下错误: 错误:14090086:SSL例程:SSL3\u获取\u服务器\u证书:证书验证失败 我开始研究OpenSSL,看看是否可以缩小范围——在我的构建系统和嵌入式系统上,确实有不同的行为导致验证失败 我已在这两个服务器上运行了以下命令(IP地址为google.com): openssl s_客户端-showcerts-connect 173.194.67.104:443-验证9 下面列出了不同机器上的输出。我在这两种情况下都运行openssl 1.0.1c。特别是,目标(ARM)系统似乎接收/解释不同的证书链 我不知道为什么输出不同。有人能解释一下我是如何让我的目标设备以与构建机器相同的方式正确验证证书的吗 生成(Fedora)计算机的输出: 验证深度是否为9 已连接(00000003) 深度=2 C=US,O=“VeriSign,Inc.”,OU=3级公共初级认证机构 验证返回:1 深度=1 C=ZA,O=Thawte咨询(私人)有限公司,CN=Thawte SGC CA 验证返回:1 深度=0 C=US,ST=California,L=Mountain View,O=Google Inc,CN=www.Google.com 验证返回:1 --- 证书链 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.Google.com i:/C=ZA/O=Thawte咨询(私人)有限公司/CN=Thawte SGC CA -----开始证书----- [为简洁起见删除] -----结束证书----- 1 s:/C=ZA/O=Thawte咨询(私人)有限公司/CN=Thawte SGC CA i:/C=US/O=VeriSign,Inc./OU=3级公共初级认证机构 -----开始证书----- [为简洁起见删除] -----结束证书----- --- 服务器证书 主题=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.Google.com 发行人=/C=ZA/O=Thawte咨询(私人)有限公司/CN=Thawte SGC CA --- 未发送客户端证书CA名称 --- SSL握手读取了1907个字节,写入了299个字节 --- 新的TLSv1/SSLv3密码是RC4-SHA 服务器公钥为1024位 支持安全的重新协商 压缩:无 扩展:无 SSL会话: 协议:TLSv1 密码:RC4-SHA 会话ID:C05953342AC01E9AB63CF0BABBE942B4E29061AA4904C3F1393EBBB1548B0254 会话ID ctx: 主密钥:38B97C0CC2795AD1D3EEACAE24E33F1E5A0988AE9182AC85DFFF5B6BFAE6585E6BCF763E1E0EB300CD38B87CC0F2501 键Arg:无 Krb5负责人:无 PSK身份:无 PSK标识提示:无 TLS会话票证生存期提示:100800(秒) TLS会话票证: [为简洁起见删除] 开始时间:1347036912 超时:300(秒) 验证返回代码:0(正常) 目标(ARM)机器的输出 验证深度是否为9 已连接(00000003) 深度=1 C=ZA,O=Thawte咨询(私人)有限公司,CN=Thawte SGC CA 验证错误:num=20:无法获取本地颁发者证书 验证返回:1 深度=1 C=ZA,O=Thawte咨询(私人)有限公司,CN=Thawte SGC CA 验证错误:num=27:证书不受信任 验证返回:1 深度=0 C=US,ST=California,L=Mountain View,O=Google Inc,CN=www.Google.com 验证返回:1 --- 证书链 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.Google.com i:/C=ZA/O=Thawte咨询(私人)有限公司/CN=Thawte SGC CA -----开始证书----- [为简洁起见删除] -----结束证书----- 1 s:/C=ZA/O=Thawte咨询(私人)有限公司/CN=Thawte SGC CA i:/C=US/O=VeriSign,Inc./OU=3级公共初级认证机构 -----开始证书----- [为简洁起见删除] -----结束证书----- --- 服务器证书 主题=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.Google.com 发行人=/C=ZA/O=Thawte咨询(私人)有限公司/CN=Thawte SGC CA --- 未发送客户端证书CA名称 --- SSL握手读取2130字节,写入443字节 --- 新的TLSv1/SSLv3密码是ECDHE-RSA-RC4-SHA 服务器公钥为1024位 支持安全的重新协商 压缩:无 扩展:无 SSL会话: 协议:TLSv1.2 密码:ECDHE-RSA-RC4-SHA 会话ID:AA9E7D7AD223F18241A210D224B8BEF4A441572C1A9719BF3504FB03297D85DE 会话ID ctx: 主钥匙:7A15F2071D50C076C0524AAD45857C5683212370582AD7D9F882B64104F0A0A8C2948B8B85C1EC19015C 51CAC30D4A05 键Arg:无 PSK身份:无 PSK标识提示:无 SRP用户名:无 TLS会话票证生存期提示:100800(秒) TLS会话票证: [为简洁起见删除] 开始时间:1347036508 超时:300(秒) 验证返回代码:27(证书不受信任)openssl证书验证-构建系统和目标系统上的不同行为(在ARM上无法正常工作),openssl,arm,Openssl,Arm,这个故事的背景是,我将gSOAP与openssl一起用于一些SOAP/WSDL应用程序开发。最终的应用程序必须为嵌入式ARM设备进行交叉编译 在我的构建系统(Fedora 17 x64)上一切正常,但当我在目标设备(ARM/Montavista 5)上运行交叉编译版本时,我得到以下错误: 错误:14090086:SSL例程:SSL3\u获取\u服务器\u证书:证书验证失败 我开始研究OpenSSL,看看是否可以缩小范围——在我的构建系统和嵌入式系统上,确实有不同的行为导致验证失败 我已在这两个服
错误消息非常清楚:
openssl
无法使用ARM-box上的CA存储验证签署服务器证书的CA是否可信。要验证您是否可以从
curl
的站点下载受信任的CA捆绑包:然后使用-CAfile
参数使用它:openssl s_客户端-showcerts-connect 173.194.67.104:443-验证9-CAfile
要以编程方式执行此操作,请查看函数。另请参阅
openssl
命令行工具的源代码以了解更多详细信息:(搜索CAfile&SSL\u CTX\u load\u verify\u位置)。为了防止(非代码)示例文本块一起运行,您可以使用
标记它们(直到如此支持的那一天)。对于代码块,用四个空格缩进以将其标记为代码;对于许多语言,这也会使块着色。编辑器工具栏中的“{}”按钮可以为您执行此操作。单击编辑器工具栏中的橙色问号,以获取有关格式设置的详细信息和提示。是否
verify depth is 9
CONNECTED(00000003)
depth=2 C = US, O = "VeriSign, Inc.", OU = Class 3 Public Primary Certification Authority
verify return:1
depth=1 C = ZA, O = Thawte Consulting (Pty) Ltd., CN = Thawte SGC CA
verify return:1
depth=0 C = US, ST = California, L = Mountain View, O = Google Inc, CN = www.google.com
verify return:1
---
Certificate chain
0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
i:/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
-----BEGIN CERTIFICATE-----
[REMOVED FOR BREVITY]
-----END CERTIFICATE-----
1 s:/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
i:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
-----BEGIN CERTIFICATE-----
[REMOVED FOR BREVITY]
-----END CERTIFICATE-----
---
Server certificate
subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
issuer=/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
---
No client certificate CA names sent
---
SSL handshake has read 1907 bytes and written 299 bytes
---
New, TLSv1/SSLv3, Cipher is RC4-SHA
Server public key is 1024 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : RC4-SHA
Session-ID: C05953342AC01E9AB63CF0BABBE942B4E29061AA4904C3F1393EBBB1548B0254
Session-ID-ctx:
Master-Key: 38B97C0CC2795AD1D3EEACAE244E33F1E5A0988AE9182AC85DFFF5B6BFAE6585E6BCF763E1E0EB300CD38B87CC0F2501
Key-Arg : None
Krb5 Principal: None
PSK identity: None
PSK identity hint: None
TLS session ticket lifetime hint: 100800 (seconds)
TLS session ticket:
[REMOVED FOR BREVITY]
Start Time: 1347036912
Timeout : 300 (sec)
Verify return code: 0 (ok)
verify depth is 9
CONNECTED(00000003)
depth=1 C = ZA, O = Thawte Consulting (Pty) Ltd., CN = Thawte SGC CA
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=1 C = ZA, O = Thawte Consulting (Pty) Ltd., CN = Thawte SGC CA
verify error:num=27:certificate not trusted
verify return:1
depth=0 C = US, ST = California, L = Mountain View, O = Google Inc, CN = www.google.com
verify return:1
---
Certificate chain
0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
i:/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
-----BEGIN CERTIFICATE-----
[REMOVED FOR BREVITY]
-----END CERTIFICATE-----
1 s:/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
i:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
-----BEGIN CERTIFICATE-----
[REMOVED FOR BREVITY]
-----END CERTIFICATE-----
---
Server certificate
subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
issuer=/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
---
No client certificate CA names sent
---
SSL handshake has read 2130 bytes and written 443 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-RC4-SHA
Server public key is 1024 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-RC4-SHA
Session-ID: AA9E7D7AD223F18241A210D224B8BEF4A441572C1A9719BF3504FB03297D85DE
Session-ID-ctx:
Master-Key: 7A15F2071D50C076C0524AAD45857C5683212370582AD7D9F882B64104F0A0A8C2948B8B85C1EC19015C
51CAC30D4A05
Key-Arg : None
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 100800 (seconds)
TLS session ticket:
[REMOVED FOR BREVITY]
Start Time: 1347036508
Timeout : 300 (sec)
Verify return code: 27 (certificate not trusted)