我需要使用 openssl 在 shell 脚本中执行一些 HTTP GET 请求。我现在用来执行此操作的行如下所示。这是解析以下格式的 XML 响应的内容。
<Result>success</Result>
<Result>failure</Result>
echo -e "GET /test HTTP/1.1\r\nHost:$(hostname)\r\n\r\n" | openssl 2>&1 s_client -quiet -connect server-url:443 | grep -o -P --color '(?<=Result\>).*(?=\</Result)'
Run Code Online (Sandbox Code Playgroud)
这有效并相应地返回字符串“成功”或“失败”。我面临的问题是该openssl命令在执行 GET 请求后不会终止,而是坐在那里等待更多输入。我相信这是由于隐式的-ign_eof,它阻止了由-quiet选项引起的自动终止。我已经尝试使用该-no_ign_eof选项,但这会导致openssl命令在 GET 请求收到响应之前终止,因此如果我使用它,我将无法获取响应的内容。
如何修改此命令,以便我可以通过 stdin 传递 GET 请求(因为我想将其放入循环中是必需的),但openssl在每次请求后都会终止该命令?
我在 Debian Squeeze 6.0.4 上运行 Puppet 的默认配置。
服务器的 FQDN 是 master.example.com。客户端的 FQDN 是 client.example.com。
我可以联系傀儡大师并发送 CSR。我使用 puppetca -sa 对其进行签名,但客户端仍无法连接。
两台机器都有准确的日期和时间。
这是出现在 /var/log/syslog 中的内容:
Apr 3 17:03:52 localhost puppet-agent[18653]: Reopening log files
Apr 3 17:03:52 localhost puppet-agent[18653]: Starting Puppet client version 2.6.2
Apr 3 17:03:53 localhost puppet-agent[18653]: Could not retrieve catalog from remote server: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Apr 3 17:03:53 localhost puppet-agent[18653]: Using cached catalog
Apr 3 17:03:53 localhost puppet-agent[18653]: Could not retrieve …Run Code Online (Sandbox Code Playgroud) 我刚刚将我的 debian wheezy 服务器更新到了最新版本的 openssl 软件包,该软件包修复了 heartbleed 错误。
我在我的服务器上支持 SSL,但只有蛇油证书。我只是想知道更新蛇油证书是否真的存在任何安全问题,还是我可以保持原样,因为它无论如何都是蛇油证书?
这个问题可能来自我对 ssl 缺乏了解......但是如果我应该更改我的蛇油证书,请提前感谢您的任何解释,如果是,为什么:)
我想在我的 nginx SSL 环境中启用 SSL 密码EDH-DSS-DES-CBC3-SHA(也称为TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA)以支持 Windows XP 上的 IE8。
nginx 的基本 SSL 密码是:
ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK
Run Code Online (Sandbox Code Playgroud)
EDH-DSS-DES-CBC3-SHA通过 禁用!DES。我试图将该密码放在禁用规则之前(在DHE-RSA-AES256-SHA和之间!aNULL)和之后(作为最后一个参数),但都没有奏效。
如何在EDH-DSS-DES-CBC3-SHA不启用所有DES或手动禁用其他DES密码的情况下启用密码?
版本信息:nginx 1.7.8,OpenSSL 1.0.1e
给出可以链接的 SSL 证书和密钥的性质,我(我自己)是否可以根据为通配符子域颁发的主域证书和密钥为子域生成证书?
这里的做法是,我必须为一个子域设置一个新的完全不同的远程(物理)服务器,并且我想尽量减少主证书和密钥被劫持的风险,以防万一。
我可以使用提供我的主域、通配符证书和密钥的 openssl 实用程序来做到这一点,还是应该再次由 CA 辞职?如果可以,怎么做?
谢谢
如何将 LetsEncrypt 生成的证书文件与 Neo4j 实例一起使用?LetsEncrypt 生成的文件是:
到目前为止,我已经尝试通过 OpenSSL进行转换,但没有成功,使用从 PEM 到 DER 的转换。Neo4j 抱怨在启动时找不到证书。问题是如何将 LetsEncrypt 证书转换为 Neo4j 可以使用的东西。
设置细节:
/var/lib/neo4j/certificates/以名称neo4j.{cert,key}、权限600、归neo4j:nogroup. 所有这些似乎都是根据文档。dbms.directories.certificates=/var/lib/neo4j/certificatesdbms.connector.https.address=0.0.0.0:7473重新启动 Neo4j 时,我收到以下错误消息:
WARN Illegal character 0x16 in state=START for buffer HeapByteBuffer@5a260174[p=1,l=193,c=8192,r=192]={\x16<<< SEVERAL_LINES_OF_HEX_JIBBERISH_HERE }
WARN badMessage: 400 Illegal character 0x16 for HttpChannelOverHttp@5d682358{r=0,c=false,a=IDLE,uri=-}
Run Code Online (Sandbox Code Playgroud) 我正在为 Intranet 创建一个证书颁发机构。
我已经生成了根和中间 CA,并使用中间 CA 成功签署了服务器证书。服务器证书具有CN=mysite.com.
将来,此服务器证书将过期,我将需要颁发一个新证书。但是,如果我创建另一个相同的 CSR,CN=mysite.com那么当我签署它时,我会得到
failed to update database
TXT_DB error number 2
Run Code Online (Sandbox Code Playgroud)
如果我用不同的 CN 创建一个新的 CSR,这个错误就会消失,但 CN 必须相同,否则浏览器不会说它有效,对吧?
我该如何解决?
编辑:我正在遵循本指南——在链接页面结束之前一切都很好,但是当我尝试重复此页面上的步骤以创建第二个证书时,openssl 要求我为新证书提供不同的 CN。
SUBJ="/C=$C/ST=$ST/L=$L/O=$O/OU=$OU/CN=$CN"
# Generate CSR
echo "$PW" | openssl req \
-config "$CAROOT/intermediate/openssl.cnf" \
-new -sha256 -subj "$SUBJ" -passin stdin \
-key "$PRIV_ENC" -out "$CSR_INT" >/dev/null 2>&1 ||
{
>&2 echo "Could not openssl req";
exit 1;
}
# Sign CSR
openssl ca \
-config "$CAROOT/intermediate/openssl.cnf" …Run Code Online (Sandbox Code Playgroud) certificate openssl pki ssl-certificate certificate-authority
当我尝试运行以下命令来发出一个新的私钥时,我用它来通过 SSL 托管我的 Web 应用程序:
openssl genrsa -out example.key 2048
Run Code Online (Sandbox Code Playgroud)
出现以下错误:
unable to write 'random state'
e is 65537 (0x10001)
Run Code Online (Sandbox Code Playgroud)
在网上挖掘之后,我找到了一个解决方案,它指示您删除该~/.rnd文件,该文件可能归root.
sudo rm ~/.rnd
Run Code Online (Sandbox Code Playgroud)
但是,我发现~/.rnd如果您openssl使用sudo.
所以我的问题是:
它是什么~/.rnd以及为什么它存在于我的环境中?
哪个是发布新私钥的更好方法?
我需要生成带有 SAN URI 的 TLS 证书,其中 URI 有一个片段(有一个哈希“#”)。但是当我尝试使用 openssl 生成证书时,该片段被删除。
# generate key and CSR for client certificate
openssl req -nodes -new -keyout me.key -out me.csr -subj "/O=Acme/CN=me"
# sign cert
openssl x509 -req -in me.csr -CA My-CA.crt -CAkey My-CA.key -set_serial 01 -out me.crt -extfile <(echo 'subjectAltName=URI:https://my.example/profile#me')
# verify result
openssl x509 -text -noout -in me.crt
# X509v3 extensions:
# X509v3 Subject Alternative Name:
# URI:https://my.example/profile
Run Code Online (Sandbox Code Playgroud)
我尝试了几种不同的方法来转义该值,但似乎没有任何效果符合预期。我认为转义可能适用于 Common Name 等字段,但不适用于 SAN 部分。
我对 openssl 替代品持开放态度。但如果我能看到一个概念验证证书,我可以用它来验证它是否有效,这将会很有帮助。
注意:这本质上是 WebID-TLS 的要求 ( https://www.w3.org/2005/Incubator/webid/spec/tls/#dfn-webid_certificate …
openssl ×10
ssl ×3
certificate ×2
nginx ×2
bash ×1
heartbleed ×1
lets-encrypt ×1
neo4j ×1
pki ×1
puppet ×1
puppetmaster ×1
scripting ×1