标签: openssl

使用 openssl 命令行的 Gmail POP3:RETR 时挂起

我想使用 openssl s_client 访问 Gmail POP3S 服务器。我正在做以下事情:

$ openssl s_client -connect pop.gmail.com:995
+OK Gpop ready for requests from <removed: ip> d11pf35377217wam.36
USER <removed: user@gmail.com>
+OK send PASS
PASS <removed: password>
+OK Welcome.
LIST
+OK 1 messages (2197 bytes)
1 2197
.
STAT
+OK 1 2197
RETR 1
RENEGOTIATING
Run Code Online (Sandbox Code Playgroud)

问题是我永远无法执行 RETR 命令。“RENEGOTIATING”时它总是挂起。

我缺少什么?

pop3 gmail openssl

5
推荐指数
1
解决办法
6076
查看次数

为什么 Windows 可能错误地声称自签名根 CA 证书已被吊销?

我使用 openssl 创建了一个自签名根 CA 证书供内部测试使用。它已在许多机器和平台(Windows、Linux、各种 Java/.NET/浏览器客户端)上成功安装并用作受信任的 CA,没有出现任何问题。

一名用户(运行 WinXP SP3 / IE8)在尝试将 CA 证书导入其受信任的根存储时收到以下错误:“此证书已被其证书颁发机构吊销”

CA 确实引用了我自己创建的 CRL,但它是空的。用户可以手动访问并查看 CRL 并确认其为空。CRL 检查在 IE 中被禁用,但我猜想在填充证书存储时此设置可能不适用。

有什么可以解释这一点呢?来自不同 CA 但具有相同指纹的已撤销证书是否有任何方法可能导致我的 CA 证书被标记为已撤销?

windows-xp openssl pki ssl-certificate certificate-authority

5
推荐指数
1
解决办法
4302
查看次数

使用自定义证书卷曲

我希望curl能够与goDaddy签名的网站一起使用:如果我打电话

curl mypage.com/bla
Run Code Online (Sandbox Code Playgroud)

我收到证书验证错误。我尝试使用以下代码片段获取 ca 证书:

echo | openssl s_client -connect mysite.com:443 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > cert.pem
Run Code Online (Sandbox Code Playgroud)

然后打电话

curl mypage.com/bla --cacert cert.pem
Run Code Online (Sandbox Code Playgroud)

这也导致了验证错误。我检查了证书日期和主题,一切似乎都很好?

我缺少什么?我可能需要整个链条吗?如果是,是否有命令可以获取全部内容?

openssl ssl-certificate curl

5
推荐指数
2
解决办法
7万
查看次数

使用 OpenSSL 客户端连接到 URL 可以工作,但curl 失败

我有一台 CentOS 5.9 服务器,我需要从该服务器与另一台服务器建立 SSL 连接。远程服务器具有最终由 GeoTrust Global CA 签名的证书。在撰写本文时,该证书是GeoTrust 下载页面上列出的第二个证书。我得到的结果不一致,具体取决于我使用 OpenSSL 还是curl 进行连接:

openssl s_client -connect <server>:443 -CAfile /path/to/GeoTrustCA.pem
Run Code Online (Sandbox Code Playgroud)

工作正常,但是

curl --cacert /path/to/GeoTrustCA.pem https://<server>/
Run Code Online (Sandbox Code Playgroud)

失败并出现标准“无法验证证书”错误。

以下是我正在使用的工具的详细信息:

$ curl --version 
curl 7.15.5 (i386-redhat-linux-gnu) libcurl/7.15.5
OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5 Protocols: tftp ftp telnet dict
ldap http file https ftps  Features: GSS-Negotiate IDN IPv6 Largefile
NTLM SSL libz
Run Code Online (Sandbox Code Playgroud)

$ openssl version
OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
Run Code Online (Sandbox Code Playgroud)

我很困惑。我连接的服务器多年来一直工作没有明显问题:我从未听说过任何人或任何系统无法像这样连接到它。

ssl centos openssl curl

5
推荐指数
1
解决办法
2万
查看次数

openssl 有什么方法可以从一开始就生成具有 400 (-r--------) 权限的私钥吗?

我用来openssl在脚本中生成私钥和 CSR。该脚本需要先生成密钥,然后调用chmod 400 whatever.key将私钥的权限更改为更安全的内容。

有没有办法消除第二步并openssl从一开始就创建具有适当权限的文件?对我来说,让其他进程无法读取私钥(即使是一毫秒)似乎更干净。

您可以umask在脚本中使用来执行类似的操作还是有其他方法?

openssl file-permissions umask

5
推荐指数
1
解决办法
1666
查看次数

如何使用带有自定义引擎的 OpenSSL 验证文件签名

2017 年 12 月 28 日更新 \xe2\x80\x93 3

\n\n

OpenSSL DSTU 模块的作者慷慨地提供了OpenSSL+DSTU 实现的补丁并修复了该问题,并提供了进一步的帮助。

\n\n

我能够用这个命令首先完成我需要的事情:

\n\n
./apps/openssl smime -verify -noverify -in my_message.txt.p7s -engine dstu -inform DER\nengine "dstu" set.\nHello, world!\nVerification successful\n
Run Code Online (Sandbox Code Playgroud)\n\n

后来将证书链连接bundle.pem成 后,我能够执行以下操作:

\n\n
./apps/openssl smime -verify -CAfile bundle.pem -in /yo/my_message.txt.p7s -engine dstu -inform DER\nengine "dstu" set.\nHello, world!\nVerification successful\n
Run Code Online (Sandbox Code Playgroud)\n\n

2017 年 12 月 28 日更新 \xe2\x80\x93 2

\n\n

OpenSSL DSTU 模块的作者确认该模块目前无法正常工作 \xe2\x80\x93 https://github.com/dstucrypt/openssl-dstu/issues/2#issuecomment-354288000

\n\n

我想我必须到其他地方寻找合适的 DSTU4145 实现。我刚刚了解了一个 BountyCastle 项目,以及它的规范包括 …

openssl verification digital-signatures

5
推荐指数
1
解决办法
5516
查看次数

如何使用 OpenSSL 在 x509 证书或 pkcs#7 中添加友好名称

我想知道是否可以在生成的证书或文件中插入友好名称p7p12我发现使用带有选项的文件是可能的,但使用证书或...-name似乎是不可能的p7

有关信息,这是我的两个命令。我的目标是使用java程序提取文件中的证书p7,使用友好的名称来识别它。

openssl x509 -req -days 365 -in final.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out signedfinal.crt -extensions x509v3
openssl crl2pkcs7 -certfile ca.crt -certfile signedfinal.crt -out file.p7 -nocrl
Run Code Online (Sandbox Code Playgroud)

certificate openssl

5
推荐指数
0
解决办法
6463
查看次数

如何从SubjectPublicKeyInfo 格式的.der 文件中提取公钥?

我有一个似乎采用以下SubjectPublicKeyInfo格式的公钥。我说“出现”是因为我对这个密钥的唯一了解是它加载一个 Java 应用程序X509EncodedKeySpec,根据文档,该应用程序用于以SubjectPublicKeyInfo格式加载密钥。

我无法使用openssl,pkcs8x509来解析文件asn1parse

下面是asn1解析的结果:

openssl asn1parse -in public_key.der -inform der

0:d=0  hl=4 l= 290 cons: SEQUENCE          
4:d=1  hl=2 l=  13 cons: SEQUENCE          
6:d=2  hl=2 l=   9 prim: OBJECT            :rsaEncryption
17:d=2  hl=2 l=   0 prim: NULL              
19:d=1  hl=4 l= 271 prim: BIT STRING        
Run Code Online (Sandbox Code Playgroud)

基于该输出,我尝试通过尝试不同的偏移量和长度来提取实际密钥,然后将其保存到 .der 文件中:

openssl asn1parse -in public_key.der -inform der -offset <> -length <l> -out public_key.der
Run Code Online (Sandbox Code Playgroud)

然后我将输出反馈给openssl

openssl pkcs8 -inform …
Run Code Online (Sandbox Code Playgroud)

openssl

5
推荐指数
1
解决办法
1万
查看次数

如何使用我的组织内部 CA 签署新的 FreeIPA 服务器的内部 CA?

我的组织有一个内部证书颁发机构 (CA),我们已经生成了许多内部证书并已安装在机器上。

我正在设置FreeIPA LDAP/Kerberos 服务器,在初始安装后,它生成了自己的内部 CA,我可以在 Web 界面中看到它。

我想用现有组织的 CA 签署 FreeIPA CA,以建立证书信任链。我正在按照FreeIPA 说明手动更新外部签名的 IdM CA 证书,我相信该说明涵盖了使用外部 CA 签署 FreeIPA CA 的内容。这产生了一个 CSR,我使用现有的 CA 签署了该 CSR 以生成一个新的签名 FreeIPA CA。

但是,我在尝试使用该ipa-cacert-manage renew --external-cert-file命令重新导入新签名的 CA + 证书链时遇到了困难。当我按照说明运行它时,我收到一个错误,指出 CA 证书链不完整,因为它缺少链中的一个证书:

[root@lockandkey ~]# ipa-cacert-manage renew --external-cert-file=/tmp/LockAndKey_FreeIPA_CA.crt  --external-cert-file=/tmp/dfca.crt --external-cert-file=/tmp/jgca.crt 
Importing the renewed CA certificate, please wait
CA certificate chain in /tmp/LockAndKey_FreeIPA_CA.crt, 
/tmp/dfca.crt, /tmp/jgca.crt is incomplete: missing certificate with subject 
'E=domains@digitalfruition.com,CN=ca.digitalfruition.com,OU=Internal CA,O=Digital Fruition\, LLC,L=Newland,ST=North Carolina,C=US'
The ipa-cacert-manage command failed.
Run Code Online (Sandbox Code Playgroud)

但是,该证书 …

openssl certificate-authority freeipa certutil

5
推荐指数
1
解决办法
828
查看次数

如何让HAProxy基于SNI路由TCP(使用openssl s_client测试)?

我想使用 HAProxy 终止 TLS 加密的 TCP 连接,并根据用于启动 TLS 连接的服务器名称指示将未加密的 TCP 流量传递到各个后端。

我在后端服务器上运行 3 个服务,每个服务都在不同的端口(5001、5002、5003)上。HAProxy 绑定到端口 5000。我想按名称将连接路由到前 2 个服务,如果不匹配,则路由到第三个服务。我正在使用 启动与 HAProxy 的连接openssl s_client。但是,在日志中我可以看到连接仅路由到默认服务器,即 SNI 似乎被忽略。

域名系统:

A record     demo.sni.example.com     1.2.3.4
CNAME        1.sni.example.com        pointing to demo.sni.example.com   
CNAME        2.sni.example.com        pointing to demo.sni.example.com   
Run Code Online (Sandbox Code Playgroud)

即我希望发生以下路由:

SNI = 1.sni.example.com:5000 -> 1.2.3.4:5001
SNI = 2.sni.example.com:5000 -> 1.2.3.4:5002
anything else on port 5000 -> 1.2.3.4:5003
Run Code Online (Sandbox Code Playgroud)

haproxy.cfg:

global
  log stdout  format raw  local0 info

defaults
  timeout client 30s
  timeout server 30s
  timeout connect 5s
  option tcplog

frontend …
Run Code Online (Sandbox Code Playgroud)

ssl openssl haproxy sni

5
推荐指数
1
解决办法
2万
查看次数