我有一个 JKS 格式的密钥库,我想在 apache2 中使用它。如何以简单的方式将密钥和证书(我已经链接)导出到 JKS 中?我在那里找到了很多答案,但似乎没有人遇到我的问题......(或者答案是部分的)
感谢您的时间。
我可以使用此命令查看证书
openssl s_client -host {HOST} -port 443 -prexit -showcerts
Run Code Online (Sandbox Code Playgroud)
如何将网站的 x509 证书保存在 PEM - 文件中?
首先,我有什么:
OpenSSL 1.0.1e-fips 11 Feb 2013
nginx version: nginx/1.6.2
CentOS Linux release 7.0.1406 (Core)
Run Code Online (Sandbox Code Playgroud)
并且,出于测试目的,自签名证书:
openssl req -x509 -sha256 -newkey rsa:2048 -keyout private_key.pem -out certificate.pem -days 365
openssl rsa -in private_key.pem -out certificate_key.pem
openssl dhparam -out dhparam.pem 4096
Run Code Online (Sandbox Code Playgroud)
所以,问题如下 - 当我在浏览器中打开 test.example.com 时,我得到 ERR_CONNECTION_RESET。在 nginx 错误日志中,我看到以下内容:
2015/02/07 03:18:34 [error] 27951#0: *17 no "ssl_certificate" is defined in server listening on SSL port while SSL handshaking, client: my.computers.ip.address, server: 0.0.0.0:443
Run Code Online (Sandbox Code Playgroud)
我的/etc/nginx/nginx.conf——
# For more information on configuration, see:
# * …Run Code Online (Sandbox Code Playgroud) 我最近在我们的一个 nginx 网络服务器上安装了一个自签名 SSL 证书。如果我尝试 wget 一个文件,--no-check-certificate我会收到以下错误。您可以使用浏览器访问该站点,浏览器会识别出它是自签名的,并且证书会显示所有正确的信息。似乎基于我应该找到一种方法在本地信任证书的消息,但这不会破坏--no-check-certificate的目的吗?
$ wget https://www.example.com/index.html --no-check-certificate
--2015-02-20 14:13:58-- https://www.example.com/index.html
Resolving example.com... 192.0.2.1
Connecting to example.com|192.0.2.1|:443... connected.
WARNING: cannot verify example.com’s certificate, issued by “/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation Secure Server CA”:
Unable to locally verify the issuer’s authority.
WARNING: no certificate subject alternative name matches
requested host name “example.com”.
HTTP request sent, awaiting response... Read error (Connection reset by peer) in headers.
Retrying.
Run Code Online (Sandbox Code Playgroud)
任何想法将不胜感激。
我已从 ASA 5510 导出现有证书+密钥:
asa5510(config)# crypto ca export MYTRUSTSTORE pkcs12 MYPASSWORD
将输出保存在文件 (vpn-cisco.pkcs12) 中,现在我试图将证书和密钥提取到单独的文件中,如下所示:
openssl pkcs12 -in cisco-vpn.pkcs12 -nocerts -out privateKey.pem
我收到的错误:
139708630054816:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1319:
139708630054816:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:381:Type=PKCS12
Run Code Online (Sandbox Code Playgroud)
如果我运行openssl pkcs12 -info ...或任何其他命令,同样的错误。
我尝试再次导出文件并使用 ASDM 而不是 CLI 进行比较,但文件完全相同。
谷歌搜索错误只是说文件的编码可能以某种方式关闭,但没有具体细节。
我遇到了一个有趣的问题。我们有一个 PHP 脚本可以联系 LTL 托运人 ( https://facts.dohrn.com/ )。该脚本一直失败,因为它无法验证 SSL 证书。我访问了该站点,发现他们使用的是 GoDaddy SHA2 证书(使用GoDaddy 证书捆绑包 - G2,这是用于 SHA2 的)。
我安装了最新版本,ca-certificate看起来他们有Go Daddy Root Certificate Authority - G2但这不是一回事,并且在所有形式的验证中都失败了。我终于能够通过复制包并直接在 CURL 请求中使用它来让它工作。但这只是一种解决方法。是否还有其他我遗漏的东西可以在不直接安装 CA 的情况下完成这项工作?
# openssl s_client -connect fact.dohrn.com:443
CONNECTED(00000003) depth=0 OU = Domain Control Validated, CN = fact.dohrn.com verify
error:num=20:unable to get local issuer certificate verify return:1
depth =0 OU = 域控制验证,CN = fact.dohrn.com 验证
错误:num=27:证书不可信验证返回:1 深度=0 OU =
域控制验证,CN = fact.dohrn.com 验证
错误:num= 21:unable to verify the …
由于我的 Debian 服务器上的最新 openssl 升级,我的 mysql 客户端无法连接并给出以下消息
SSL connection error: error:14082174:SSL routines:SSL3_CHECK_CERT_AND_ALGORITHM:dh key too small
Run Code Online (Sandbox Code Playgroud)
我猜这是为了防止Logjam攻击。
感谢https://weakdh.org/sysadmin.html,我知道如何生成更强的 Diffie-Hellman 参数。但是,我没有找到任何 MySQL 配置选项来实际使用它们。
有人知道吗?
我正在尝试在 openshift 上使用 openssl 生成 CSR。我在使用 SSH 运行命令时遇到过这个问题。
openssl genrsa -des3 -out myApp.key 2048
Generating RSA private key, 2048 bit long modulus
...........+++
.....................................................................+++
unable to write 'random state'
e is 65537 (0x10001)
Run Code Online (Sandbox Code Playgroud)
我已经安静地研究了一下并尝试了几件事
任何指针?我很困惑这发生在一个干净的新应用程序上。
我在 Unix 机器上有一个 Apache 服务器:
Apache/2.2.29 (Unix) OpenSSL/0.9.8zg
我想将 OpenSSL 版本升级到 1.0.2,这是我系统上当前安装的版本:
machine:/ user$ openssl version
OpenSSL 1.0.2d 9 Jul 2015
Run Code Online (Sandbox Code Playgroud)
我可以在不重新编译整个服务器的情况下做到这一点吗?我必须重新编译mod_ssl只因为它里面装httpd.conf用LoadModule?
LoadModule ssl_module modules/mod_ssl.so
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我使用我自己的 CA 为我的基础设施中的服务创建 SSL 证书。这些证书由我的 CA 直接签署。
在我看来,这可能是一个弱策略,好像证书会被破坏,我需要从一个 CA 创建新的。如果 CA 受到威胁,则游戏结束,因为每个服务都需要更新。
所以我的理解是,“保护”自己和“淡化”关注的典型方法是创建一个证书链,并在链的末端签署服务证书,这样如果签署者受到威胁,下一级可用于创建新的签名证书。
我说得对吗?
我想做的是创建我自己的证书链。
整个 TLS/SSL 的东西对我来说仍然有点模糊,但正如我所见,首先创建一个主密钥,openssl genrsa然后使用该密钥创建一个自签名证书openssl req -x509 -new以创建 CA。
然后我可以使用openssl req -new -key' and sign the request with my CA withopenssl x509 -req -CA ca.pem ...`创建新密钥和证书签名请求
那么,要创建一个证书链,应该怎么做呢?
我是否只需创建一个新密钥、新签名请求,并使用上次签名的证书而不是 CA 对其进行签名?依此类推,直到我有足够的保护级别,然后用最低级别的证书签署所有证书/密钥对?
这些东西令人困惑,我想把它弄对;-)
我发现的关于 TLS 的所有内容都非常复杂,而“简单”教程则晦涩难懂。我正在浏览 openssl 手册页,但我想获得该过程的简单解释,然后我会确保每一步都正确。
感谢您的洞察力。
ssl openssl tls certificate-authority self-signed-certificate