我想使用 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”时它总是挂起。
我缺少什么?
我使用 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
我希望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)
这也导致了验证错误。我检查了证书日期和主题,一切似乎都很好?
我缺少什么?我可能需要整个链条吗?如果是,是否有命令可以获取全部内容?
我有一台 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)
我很困惑。我连接的服务器多年来一直工作没有明显问题:我从未听说过任何人或任何系统无法像这样连接到它。
我用来openssl在脚本中生成私钥和 CSR。该脚本需要先生成密钥,然后调用chmod 400 whatever.key将私钥的权限更改为更安全的内容。
有没有办法消除第二步并openssl从一开始就创建具有适当权限的文件?对我来说,让其他进程无法读取私钥(即使是一毫秒)似乎更干净。
您可以umask在脚本中使用来执行类似的操作还是有其他方法?
2017 年 12 月 28 日更新 \xe2\x80\x93 3:
\n\nOpenSSL 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\nRun Code Online (Sandbox Code Playgroud)\n\n后来将证书链连接bundle.pem成 后,我能够执行以下操作:
./apps/openssl smime -verify -CAfile bundle.pem -in /yo/my_message.txt.p7s -engine dstu -inform DER\nengine "dstu" set.\nHello, world!\nVerification successful\nRun Code Online (Sandbox Code Playgroud)\n\n2017 年 12 月 28 日更新 \xe2\x80\x93 2:
\n\nOpenSSL DSTU 模块的作者确认该模块目前无法正常工作 \xe2\x80\x93 https://github.com/dstucrypt/openssl-dstu/issues/2#issuecomment-354288000。
\n\n我想我必须到其他地方寻找合适的 DSTU4145 实现。我刚刚了解了一个 BountyCastle 项目,以及它的规范包括 …
我想知道是否可以在生成的证书或文件中插入友好名称p7。p12我发现使用带有选项的文件是可能的,但使用证书或...-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) 我有一个似乎采用以下SubjectPublicKeyInfo格式的公钥。我说“出现”是因为我对这个密钥的唯一了解是它加载一个 Java 应用程序X509EncodedKeySpec,根据文档,该应用程序用于以SubjectPublicKeyInfo格式加载密钥。
我无法使用openssl,pkcs8或x509来解析文件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) 我的组织有一个内部证书颁发机构 (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)
但是,该证书 …
我想使用 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) openssl ×10
curl ×2
ssl ×2
centos ×1
certificate ×1
certutil ×1
freeipa ×1
gmail ×1
haproxy ×1
pki ×1
pop3 ×1
sni ×1
umask ×1
verification ×1
windows-xp ×1