我在我的 Debian VPS(一个 xen domU)上遇到了一个关于 SSL 的问题。也就是说,几乎所有的 SSL 连接都在客户端 hello 时挂起。例如:
# curl -vI https://graph.facebook.com
使用 openssl 客户端时也是如此。但是,某些 SSL 流量有效(例如https://www.nordea.se)。
服务器
#uname -a
Linux server.com 2.6.26-1-xen-amd64 #1 SMP Fri Mar 13 21:39:38 UTC 2009 x86_64 GNU/Linux
然而,它确实适用于我的 Dom 0(主要的 xen 主机)。
apt-get
我什至无法使用 debian 安全源运行 apt-get update(在读取标题时挂起)
打开 SSL
一开始我以为我有一个旧的 openssl 客户端(0.9.8o-4),因为我在 Dom 0(0.9.8g-15+lenny8)上似乎有一个更新的客户端,但是对 openssl deb …
在处理 Google OpenID SSL 响应时,我在 Tornado 网络服务器中遇到了 gnutls 特定的错误。我从 Tornado 邮件列表中得到的建议之一是尝试使用 OpenSSL 后端而不是 gnutls。但它在 Ubuntu 服务器(11.10)上似乎并不简单。
在 Ubuntu 服务器上,gnutls由libcurl3-gnutls包提供,openssl curl 支持由libcurl4-openssl-dev包提供。(我不知道为什么后者被命名为4and dev,但我在 apt-cache 搜索中找不到任何其他 openssl+curl 包)。
我libcurl3-gnutls默认安装了,但没有安装libcurl4-openssl-dev。所以我安装了后者并重新启动了 Torando 实例。但这似乎不起作用。我仍然遇到相同的 gnutls 错误。
我在 curl 邮件列表上找到了关于支持 libcurl 不同 SSL 后端的问题的旧讨论,但没有找到今天是如何完成的。到目前为止,我的猜测是 openssl 内置于 libcurl 中,而 gnutls 是通过单独的包提供的(这将解释为什么没有 libcurl3-openssl)。但是我如何让 libcurl 选择 openssl 后端而不是 gnutls?libcurl/pycurl API 中是否有一些选项可以做到这一点?
我尝试卸载libcurl3-gnutls,但 apt-get 提示它也将随之删除python-pycurl。所以那不行。
我有几个用户在 OSX 上使用SmartCVS与我们的 CVS 存储库进行交互。我们使用 cvs :ext:(SSH2) 方法访问存储库,该存储库存储在远程 linux 系统上。我们使用 ssh 密钥身份验证,并要求用户使用密码来加密他们的私钥。
OSX 附带的 ssh-keygen 版本AES-128-CBC用于加密私钥,显然 SmartCVS 使用的任何 ssh 库都不支持解密此密码,因为它会引发错误。如果我使用 PuTTYgen 在 Windows 上生成一个密钥并将该密钥移动到 OSX,则一切正常。PuTTYgen(以及 Linux 上的 ssh-keygen 的大多数版本)使用DES-EDE3-CBC密码,SmartCVS 能够毫无问题地解密。
所以,我的问题是:有没有办法告诉 ssh-keygen 在加密私钥时使用哪种密码?ssh-keygen(1)OSX 上的手册页没有说明能够设置密码类型,但我希望可能有其他方法可以在一代之后转换为另一种密码类型。
我的客户正在报告此错误。我无法重现它。更重要的是,我无法检测到任何缺陷:http : //www.digicert.com/ http://www.ssltest.net/ https://www.ssllabs.com/ssldb/都报告dev.anuary.com有一个有效的证书。我已经 Google(ed) for ssl_error_no_cypher_overlap,但没有一个线程提供任何有用的指导。
Cannot communicate securely with peer: no common encryption algorithm(s)
(Error code: ssl_error_no_cypher_overlap)
Run Code Online (Sandbox Code Playgroud)
我有一个在代理设置中同时运行 Nginx 和 Apache 的服务器,Nginx 提供静态内容,Apache 提供动态内容,效果非常好。
此设置当前托管同一个站点的两个版本,我们称它们为 production.com 和 staging.com。
我刚刚使用 SSL 完成了 production.com 站点的设置,这也很有效,但我发现如果我也使用 SSL 浏览到 staging.com,我将获得 production.com 网站根目录的内容,这显然是错误的。
有人告诉我对 SSL 和非 SSL 使用默认处理程序,这将消除这种行为,但这就是我遇到麻烦的地方。
现在我在 nginx.conf 中包含了这个配置
default_80.confserver {
listen 80;
server_name "";
return 444;
}
Run Code Online (Sandbox Code Playgroud)
default_443.conf
server {
listen 443 default_server ssl;
server_name "";
return 444;
}
Run Code Online (Sandbox Code Playgroud)
staging.com.conf
server {
listen 80;
server_name staging.com;
access_log /var/log/nginx/staging.com.log;
# static content folders
location ^~ /(images|css|js) {
root /var/www/staging.com/current;
access_log /var/log/nginx/staging.com.static.log;
}
# static content files
location ~* \.(js|css|rdf|xml|ico|txt|jpg|gif|png|jpeg)$ …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Godaddy 生成 CSR。我使用以下命令来创建证书:
openssl req -new -nodes -keyout server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Run Code Online (Sandbox Code Playgroud)
但是当我使用 server.csr 文件中生成的密钥时,我从 Godaddy 收到以下错误:
The CSR key length must be 2048 or 4096
Run Code Online (Sandbox Code Playgroud)
如何指定 CSR 的密钥大小?
PS我打算在heroku上托管的域上使用它。
我已经使用 openssl 生成了一个证书并将其放置在客户端的机器上,但是当我尝试使用该证书连接到我的服务器时,我在从我的服务器返回的主题行中提到了错误。
这就是我所做的。
1) 我使用 openssl 进行测试连接以查看我的服务器可接受的客户端证书 CA 名称是什么,我从我的客户端机器向我的服务器发出以下命令:
openssl s_client -connect myupload.mysite.net:443/cgi-bin/posupload.cgi -prexit
Run Code Online (Sandbox Code Playgroud)
我得到的部分内容如下:
Acceptable client certificate CA names
/C=US/ST=Colorado/L=England/O=Inteliware/OU=Denver Office/CN=Tim Drake/emailAddress=tdrake@mysite.com
/C=US/ST=Colorado/O=Inteliware/OU=Denver Office/CN=myupload.mysite.net/emailAddress=tdrake@mysite.com
Run Code Online (Sandbox Code Playgroud)
2) 这是服务器上关于 SSL 客户端身份验证的 apache 配置文件中的内容:
SSLCACertificatePath /etc/apache2/certs
SSLVerifyClient require
SSLVerifyDepth 10
Run Code Online (Sandbox Code Playgroud)
3) 我使用 mypos.pem 和 mypos.key 生成了一个名为“client.pem”的自签名客户端证书,所以当我运行这个命令时:
openssl x509 -in client.pem -noout -issuer -subject -serial
Run Code Online (Sandbox Code Playgroud)
这是返回的内容:
issuer= /C=US/ST=Colorado/O=Inteliware/OU=Denver Office/CN=myupload.mysite.net/emailAddress=tdrake@mysite.com
subject= /C=US/ST=Colorado/O=Inteliware/OU=Denver Office/CN=mlR::mlR/emailAddress=admin@inteliware.com
serial=0E
Run Code Online (Sandbox Code Playgroud)
(请注意 mypos.pem 在 /etc/apache2/certs/ 和 mypos.key 保存在 /etc/apache2/certs/private/)
4)我把client.pem放在客户端机器上,在客户端机器上,我运行以下命令:
openssl s_client -connect myupload.mysite.net:443/cgi-bin/posupload.cgi -status -cert client.pem
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
CONNECTED(00000003)
OCSP response: …Run Code Online (Sandbox Code Playgroud) 有人可以帮助我了解如何验证我的 SSL 证书是否已正确安装(或解决未正确安装的问题)?
我在我的 Apache 服务器上安装了 GoDaddy SSL 证书。一些用户还在报告问题(某些版本的 IE 说“无法显示此页面”,没有进一步解释),openssl 说链中存在“自签名”证书。请注意,这不是自签名证书。它由 GoDaddy 签名。这篇文章有一个不起作用的相关答案:https : //stackoverflow.com/a/4106224/1723405
以下是我采取的步骤:
第一步:生成私钥
openssl req -out CSR.csr -new -newkey rsa:2048 -nodes -keyout privateKey.key
Run Code Online (Sandbox Code Playgroud)
第 2 步:转到 GoDaddy 并通过粘贴CSR.csr.
第三步:在Apache中安装crt和bundle文件并重启。
// In <VirtualHost>
SSLEngine on
SSLProtocol -ALL +SSLv3 +TLSv1
SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP
SSLVerifyClient none
SSLCertificateFile /path/to/allthingsinsurance.net.crt
SSLCertificateKeyFile /path/to/privateKey.key
SSLCertificateChainFile /path/to/gd_bundle-g2.cr
% apachectl restart
Run Code Online (Sandbox Code Playgroud)
步骤4:去几台机器中的任何一台,使用openssl验证失败。
% openssl s_client -connect allthingsinsurance.net:443 -showcerts -CApath /etc/ssl/certs
...lots of output, shows certs I installed...
Verify return code: …Run Code Online (Sandbox Code Playgroud) 从man 8 sshd关于授权密钥文件格式和command="command"选项:
请注意,此命令可能会被 sshd_config(5) ForceCommand 指令或嵌入在证书中的命令取代。
使用ssh-keygen -O force-command="command"允许将命令嵌入到证书中。但是如何验证命令没有嵌入到证书中呢?沿着防止执行意外命令的相同思路,是否ForceCommand总是覆盖嵌入在证书中的命令?
恶意用户能否绕过 ssh authorized_keys 强制命令?问了一个关于安全性的更一般的问题,但目前那里的答案没有提到嵌入在证书中的命令。
尝试读回自己编写的subjectAltName/otherName/UTF8值时,OpenSSL 似乎已损坏:
相关的openssl.cnf配置(使用官方但随机的 OID):
[alt_names]
DNS.1 = www.foo.com
DNS.2 = www.bar.org
IP.1 = 192.168.1.1
IP.2 = 192.168.69.144
email = email@me
otherName = 1.3.6.1.4.1.1;UTF8:some other identifier
Run Code Online (Sandbox Code Playgroud)
从此配置生成的 CSR 转储示例:
TLS Web Server Authentication
X509v3 Subject Alternative Name:
DNS:www.foo.com, DNS:www.bar.org, IP Address:192.168.1.1, IP Address:192.168.69.144, email:email@me, othername:<unsupported>
Signature Algorithm: sha1WithRSAEncryption
6f:4a:1d:8f:43:7e:4d:d1:0c:7e:05:9d:1f:f0:98:b1:69:cf:
Run Code Online (Sandbox Code Playgroud)
有人可以指出我是否做错了什么吗?这让我发疯。