在 Ubuntu 上,用于签署证书(供 nginx 使用)的私钥的最佳位置似乎在 /etc/ssl/private/
这个答案补充说证书应该进入,/etc/ssl/certs/但这似乎是一个不安全的地方。做.crt文件需要保持安全或者他们认为公众?
从 Chrome 58 开始,它不再接受依赖于Common Name以下内容的自签名证书:https : //productforums.google.com/forum/#! topic/chrome/zVo3M8CgKzQ;context-place = topicsearchin/chrome/category $3ACanary%7Csort:相关性%7Cspell:false
相反,它需要使用Subject Alt Name. 我之前一直在关注有关如何生成自签名证书的指南:https : //devcenter.heroku.com/articles/ssl-certificate-self,它工作得很好,因为我需要server.crt和server.key文件来完成我正在做的事情。我现在需要生成新的证书,其中包括SAN我所有的尝试都没有在 Chrome 58 上工作。
这是我所做的:
我按照上面提到的 Heroku 文章中的步骤来生成密钥。然后我写了一个新的 OpenSSL 配置文件:
[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = san
extensions = san
[ req_distinguished_name ]
countryName = US
stateOrProvinceName = Massachusetts
localityName = Boston
organizationName = MyCompany
[ san ]
subjectAltName = DNS:dev.mycompany.com
Run Code Online (Sandbox Code Playgroud)
然后server.crt使用以下命令生成:
openssl req …Run Code Online (Sandbox Code Playgroud) 为了编译NGinx需要安装openssl和openssl-dev(我正在遵循书籍指南)。
所以我这样做:
sudo apt-get install openssl openssl-dev
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误,告诉我无法找到openssl-dev. 也经过一番谷歌搜索,似乎libssl-dev等于openssl-dev,是真的吗?(在我的服务器上apt-get找到libssl-dev)
这是我的服务器版本:2.6.32-22-server
欢迎任何帮助!
OpenSSL 'heartbleed' 漏洞 ( CVE-2014-0160 ) 影响服务 HTTPS 的网络服务器。其他服务也使用 OpenSSL。这些服务是否也容易受到类似心脏出血的数据泄漏的影响?
我特别想
至少在我的系统上,所有这些都链接到 OpenSSL 库。
在 Ubuntu 上,我无法成功使用 openssl 转换证书。
vagrant@dev:/vagrant/keys$ openssl pkcs7 -print_certs -in a.p7b -out a.cer
unable to load PKCS7 object <blah blah>:PEM
routines:PEM_read_bio:no start line:pem_lib.c:696:Expecting: PKCS7
Run Code Online (Sandbox Code Playgroud)
你以前见过这个错误吗?
我正在为我的大学课程做家庭作业。任务是使用nc (netcat)在 HTTPS 上获取网页。
要通过 HTTP 获取页面,我可以简单地执行以下操作:
cat request.txt | nc -w 5 <someserver> 80
Run Code Online (Sandbox Code Playgroud)
在request.txt我有一个 HTTP 1.1 请求
GET / HTTP/1.1
Host: <someserver>
Run Code Online (Sandbox Code Playgroud)
现在......这工作得很好。然而,挑战是 - 获取使用 HTTPS 的网页?
我得到了这样的页面证书。这就是我目前陷入困境的地方
openssl s_client -connect <someserver>:443
Run Code Online (Sandbox Code Playgroud) 注意:这不是一个真正的问题,因为我已经找到了答案,但是由于我在这里不容易找到它,所以我将其发布,以便它可以使其他人受益。
问题:如何读取连接的 PEM 文件作为 apache/mod_ssl 指令SSLCACertificateFile使用的文件?
答案(原文)(来源):
cat $file|awk 'split_after==1{n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'
Run Code Online (Sandbox Code Playgroud)
如果末尾有一个空行,这可能会留下一个空文件,例如openssl pkcs7 -outform PEM -in my-chain-file -print_certs. 为防止出现这种情况,请在打印前检查行的长度:
cat $file|awk 'split_after==1{n++;split_after=0}
/-----END CERTIFICATE-----/ {split_after=1}
{if(length($0) > 0) print > "cert" n ".pem"}'
Run Code Online (Sandbox Code Playgroud)
回答 29/03/2016:
按照@slugchewer answer,csplit可能是一个更清晰的选择:
csplit -f cert- $file '/-----BEGIN CERTIFICATE-----/' '{*}'
Run Code Online (Sandbox Code Playgroud) pkcs12 "path/to/pkcs12_container"openvpn ~/openvp_config它时要求输入私钥密码(我在使用 Chrome 导出时输入):Enter Private Key Password:...问题:如何从pkcs12中删除私钥的密码?
也就是说,创建不需要密码的 pkcs12 文件。
(似乎一年前我已经以某种方式这样做了,现在忘记了。该死的。)
使用来自该站点的说明但稍微改变它们我使用 -newca 创建了一个 CA,我复制cacert.pem到我的 comp 并在 IE 中作为受信任的发行者导入。然后我做了 -newreq 和 -sign (注意:我做/full/path/CA.sh -cmd和不做sh CA.sh -cmd)并将证书和密钥移动到 apache。
我在 IE 中访问了该站点并使用 .NET 代码,它看起来很受信任,很棒(除非我在前面写了 www. 这是预期的)。但是每次我重新启动 apache 时,我都需要输入我的网站密码?
我怎样才能做到这样我就不需要输入密码?
我有一个 PEM 文件,我将它添加到正在运行的 ssh-agent 中:
$ file query.pem
query.pem: PEM RSA private key
$ ssh-add ./query.pem
Identity added: ./query.pem (./query.pem)
$ ssh-add -l | grep query
2048 ef:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX ./query.pem (RSA)
Run Code Online (Sandbox Code Playgroud)
如何直接从文件中获取密钥的指纹(我在 ssh-agent 中看到的)?我知道ssh-keygen -l -f some_key适用于“普通”ssh 密钥,但不适用于 PEM 文件。
如果我在 .pem 文件上尝试 ssh-keygen,我会得到:
$ ssh-keygen -l -f ./query.pem
key_read: uudecode PRIVATE KEY----- failed
key_read: uudecode PRIVATE KEY----- failed
./query.pem is not a public key file.
Run Code Online (Sandbox Code Playgroud)
这个键开始于:
-----BEGIN RSA PRIVATE KEY-----
MIIEp.... etc.
Run Code Online (Sandbox Code Playgroud)
与“常规”私钥相反,它看起来像:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: …Run Code Online (Sandbox Code Playgroud) openssl ×10
ssl ×3
ubuntu ×2
apache-2.2 ×1
awk ×1
certificate ×1
chrome ×1
debian ×1
fingerprint ×1
heartbleed ×1
http ×1
https ×1
init.d ×1
netcat ×1
security ×1
shell ×1
ssh ×1
x509 ×1