我正在建立一个网站并为该网站的域购买了 SSL 证书。当我问托管公司为什么https://www.example.com拒绝连接时,他们回答说 SSL 访问是在端口 41696 上配置的。当然,https://www.example.com:41696按照他们的承诺工作,但这真的不是我想用于面向客户的网站的 URL。
托管公司还表示,即使我们获得不同的套餐,他们也无法将其更改为 443。我从未从与我合作过的任何其他托管服务提供商那里听说过。他们是否有充分的理由不让这种情况发生?或者我可以在服务器上更改任何配置以使其接受端口 443 上的 HTTPS 请求?
我正在尝试使用客户端证书进行 curl 请求,如下所示:
curl -E my.pem https://some.site
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
curl: (35) error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca
Run Code Online (Sandbox Code Playgroud)
我的理解是,当 Apache 收到对它正在侦听的 TCP 端口之一(例如 80、443)的请求时,它将通过查看 HTTP 标头来决定正在请求哪个主机Host。然后服务器将知道它应该将请求重定向到哪个虚拟主机。
但是它对基于 SSL/TLS 的 HTTP 是如何工作的呢?由于整个 HTTP 请求都被加密(至少我相信我在某处读到过),因此只有在服务器解密数据后才能读取标头信息。但是为了解密,它需要知道要使用哪个密钥对,因为您可以在 Web 服务器上安装多个 SSL 证书。
那么服务器如何知道解密需要哪个密钥呢?
我可以想象 TLS 握手提供了必要的信息。
虽然我同意链接问题的答案和我自己的答案相似,但我必须说问题是不同的。是否或如何使用独立的 SSL 证书托管多个站点是毫无疑问的。相反,我的问题涉及潜在的技术方面。
我意识到这看起来至少是其他一些问题的重复,但我已经将它们读了好几遍,但仍然做错了什么。
以下是我的 myexample.com nginx 配置文件的内容,位于/etc/nginx/sites-available.
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name myexample.com www.myexample.com;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
ssl_certificate /etc/letsencrypt/live/myexample.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/myexample.com/privkey.pem;
#Configures the publicly served root directory
#Configures the index file to be served
root /var/www/myexample.com;
index index.html index.htm;
}
Run Code Online (Sandbox Code Playgroud)
它有效,当我转到https://myexample.com 时,内容已提供并且连接是安全的。所以这个配置看起来不错。
现在,如果我将 ssl 端口更改为 9443 并重新加载 nginx 配置,则配置会重新加载而不会出错,但访问https://myexample.com 会在浏览器中显示错误(无法访问此站点 / myexample.com 拒绝访问连接。ERR_CONNECTION_REFUSED)
我在这里、这里和这里(以及其他)尝试了建议和文档,但我总是收到 ERR_CONNECTION_REFUSED 错误。
我应该注意,我可以使用非标准端口,然后将该端口显式键入 URL,例如https://myexample.com:9443。但我不想那样做。我想要的是让用户能够在任何浏览器中输入 myexample.com 并让 nginx 自动重定向到安全连接。
同样,当我使用标准 …
我今天从 StartSSL 请求了一个新的 1 类服务器证书,它在 Apache 和 Dovecot +(Thunderbird/Outlook/OpenXChange)上运行良好,但是当我尝试使用 Apple 客户端(Mac/iPhone)连接到邮件服务器时,我收到一条 SSL 错误消息。
我已经链接了
按此顺序并将结果文件用作 dovecot 中的 ssl_cert。我仅有的另外两个 SSL 设置是ssl=required和ssl_key = </path
有没有人以前遇到过这个问题并提出了解决方案?
我已经看到 Comodo 有一个椭圆曲线根(“COMODO ECC 证书颁发机构”),但我在他们的网站上没有看到提到 EC 证书。
Certicom 是否拥有阻止其他发行人提供 EC 证书的知识产权?广泛使用的浏览器是否不支持ECC?ECC 是否不适合像 Web 服务器身份验证这样的传统 PKI 使用?或者只是没有需求?
由于 NSA Suite B 的建议,我有兴趣切换到椭圆曲线。但对于许多应用程序来说似乎并不实用。
要领取奖金,答案必须提供一个链接,指向知名 CA 网站上的一个或多个页面,其中描述了他们提供的 ECC 证书选项、价格以及购买方式。在这种情况下,“众所周知”意味着在 Firefox 3.5 和 IE 8 中必须默认包含正确的根证书。如果提供了多个符合条件的答案(一个人可以希望!),一个来自无处不在的 CA 的最便宜的证书将赢得赏金。如果这不能消除任何联系(仍然希望!),我将不得不自行选择一个答案。
请记住,有人总是要求至少获得一半的赏金,因此即使您没有全部答案,也请试一试。
我们有一个客户将他们的流量定向到我们的 Web 服务器,并需要我们使用他们的通配符 SSL 证书。他们把它分成两部分给我,一个是公钥 ( .cer),另一个是包含私钥 ( .key) 的文件。我不知道如何让这两个在 IIS 中组合在一起,以便我可以将它绑定到一个站点。非常感谢您的帮助。谢谢!
Web 服务器是否可以根据传入连接的主机标头选择要使用的 SSL 证书,或者该信息是否仅在建立 SSL 连接后可用?
也就是说,我的网络服务器是否可以在端口 443 上列出并在请求https://foo.com 时使用 foo.com 证书,如果请求https://bar.com或我正在尝试使用 bar.com 证书不可能的事情,因为服务器必须在知道客户端想要什么之前建立 SSL 连接?
我正在尝试使用 nginx 通过 https 连接设置 ssh。我还没有找到任何有效的例子,所以任何帮助将不胜感激!
~$ cat .ssh/config
Host example.net
Hostname example.net
ProtocolKeepAlives 30
DynamicForward 8118
ProxyCommand /usr/bin/proxytunnel -p ssh.example.net:443 -d localhost:22 -E -v -H "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Win32)"
~$ ssh user@example.net
Local proxy ssh.example.net resolves to 115.xxx.xxx.xxx
Connected to ssh.example.net:443 (local proxy)
Tunneling to localhost:22 (destination)
Communication with local proxy:
-> CONNECT localhost:22 HTTP/1.0
-> Proxy-Connection: Keep-Alive
-> User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Win32)
<- <html>
<- <head><title>400 Bad Request</title></head>
<- <body bgcolor="white">
<- <center><h1>400 Bad …Run Code Online (Sandbox Code Playgroud) 这是我的缩写 nginx vhost conf:
upstream gunicorn {
server 127.0.0.1:8080 fail_timeout=0;
}
server {
listen 80;
listen 443 ssl;
server_name domain.com ~^.+\.domain\.com$;
location / {
try_files $uri @proxy;
}
location @proxy {
proxy_pass_header Server;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 120;
proxy_pass http://gunicorn;
}
}
Run Code Online (Sandbox Code Playgroud)
同一台服务器需要同时提供 HTTP 和 HTTPS 服务,但是,当上游发出重定向(例如,在处理表单之后)时,所有 HTTPS 请求都将重定向到 HTTP。我发现唯一可以解决此问题的方法是更改proxy_redirect为以下内容:
proxy_redirect http:// https://;
Run Code Online (Sandbox Code Playgroud)
这对于来自 HTTPS 的请求非常有效,但如果通过 HTTP 发出重定向,它也会将其重定向到 HTTPS,这是一个问题。
无奈之下,我尝试了:
if ($scheme …Run Code Online (Sandbox Code Playgroud) ssl ×10
https ×3
nginx ×3
apache-2.2 ×1
certificate ×1
curl ×1
http-proxy ×1
iis ×1
linux ×1
openssl ×1
proxy ×1
ssh ×1
tls ×1
web-hosting ×1
web-server ×1