我需要使用一个外部 IP 地址通过 https 为多个应用程序提供服务。
不应在反向代理上管理 ssl 证书。它们安装在应用程序服务器上。
是否可以将反向代理配置为使用 SNI 并通过 ssl 在端点处终止?
这可以使用 Nginx 或 Apache 之类的东西吗?配置是什么样的?
我有一台服务器https://www.groups.example.com- 在 FireFox 中,我收到“ This Connection is Untrusted”消息和“技术细节”说
www.groups.example.com uses an invalid security certificate.
The certificate is only valid for the following names:
*.example.com, example.com (Error code: ssl_error_bad_cert_domain)
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我还需要提供哪些其他信息?刚刚获得安装确认,但我 99% 确定它是 Linux 并使用 VHOSTS。确认后将更新问题。
www.groups.example.com 是否被视为具有 2 个级别的子域?
发行人是 DigiCert
我有一个通配符 ssl 认证,我正在尝试将所有非 ssl 流量重定向到 ssl。目前,我正在使用以下内容重定向工作正常的非子域 url。
server {
listen 80;
server_name mydomain.com;
#Rewrite all nonssl requests to ssl.
rewrite ^ https://$server_name$request_uri? permanent;
}
Run Code Online (Sandbox Code Playgroud)
当我对 *.mydomain.com 做同样的事情时,它在逻辑上会重定向到
https://%2A.mydomain.com/
Run Code Online (Sandbox Code Playgroud)
你如何将所有子域重定向到它们的 https 等价物?
我已经为我的域设置了 SSL,它从 Apache 的角度工作。
问题是通过 HTTPS 访问我的域有时会导致超时。当它不起作用时,通过 HTTP 访问我的网站需要一些时间,但它永远不会超时。
为什么 HTTPS 会发生这种情况,有没有办法控制 HTTPS 的超时时间?
我的配置:CentOS 5 上的 Apache 2.2.11
NameVirtualHost *:443
<VirtualHost *:443>
SuexecUserGroup foo
DocumentRoot /home/mydomain/www/
ServerName example.com
SSLEngine on
SSLProtocol -all +TLSv1 +SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
SSLCertificateFile /path/example.com.com.crt
SSLCertificateKeyFile /path/example.com.key
SSLVerifyClient none
SSLProxyVerify none
SSLVerifyDepth 0
SSLProxyVerifyDepth 0
SSLProxyEngine off
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
<Directory "/home/mydomain/www">
SSLRequireSSL
AllowOverride all
Options +FollowSymLinks +ExecCGI -Indexes
AddHandler php5-fastcgi .php
Action php5-fastcgi /cgi-bin/a.fcgi
Order allow,deny
Allow from all
</Directory>
<Directory …Run Code Online (Sandbox Code Playgroud) 概括
ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY当我尝试通过 HTTPS 连接到我的本地网络服务器时,Chrome 正在报告。我几乎可以肯定这个问题与我最近的 Windows 10 升级有关,但我不知道如何解决它。
什么有效
这是事件链,我在开始时安装了 Windows 8.1 Pro:
makecert.exe -pe -ss Root -sr LocalMachine -n "CN=local, OU=development" -r -a sha512 -e 01/01/2020makecert.exe -pe -ss My -sr LocalMachine -n "CN=myapp.local, OU=Development" -is Root -ir LocalMachine -in local -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 -a sha512 -e 01/01/2020 -sky -eku 1.3.6.1.5.5.7.3.1HOSTS文件条目myapp.local127.0.0.1myapp.local域并且只侦听HTTPS请求的IIS 8.5应用程序myapp.local证书分配给网站通过此设置,我可以轻松地从 Chrome 访问我的本地网站,而且没有任何证书或安全警告。正如预期的那样,浏览器显示了绿色挂锁。
什么不起作用 …
我的 apache conf 有点问题。当我阅读错误日志时,我可以看到以下内容:
[client xxx.xxx.xx.xx] AH01964: Connection to child 1 established (server www.mywebsite.com:443)
[client xxx.xxx.xx.xx] AH01964: Connection to child 6 established (server www.mywebsite.com:443)
[client xxx.xxx.xx.xx] AH01964: Connection to child 10 established (server www.mywebsite.com:443)
[client xxx.xxx.xx.xx] AH01964: Connection to child 15 established (server www.mywebsite.com:443)
[client xxx.xxx.xx.xx] AH01964: Connection to child 18 established (server www.mywebsite.com:443)
(70014)End of file found: [client xxx.xxx.xx.xx] AH01991: SSL input filter read failed.
(70014)End of file found: [client xxx.xxx.xx.xx] AH01991: SSL input filter read failed.
(70014)End of …Run Code Online (Sandbox Code Playgroud) 我想知道 nginx 是否能够在同一个端口上处理 http 和 https 请求。[*]
这就是我想要做的。我正在运行处理 http 请求的 Web 服务器 (lighttpd),以及通过 https 为文档树的特定部分提供服务的 C 程序。这两个进程运行在同一台服务器上。
在防火墙级别,我只能有一个端口将流量转发到此服务器。所以我想做的是在这台服务器上设置 nginx 以便它侦听单个端口上的请求,然后:
A) 重定向所有http://myhost.com/*请求,以便它们转到 localhost:8080(lighttpd 正在侦听的位置)
B) 如果用户请求以 https://myhost.com/app 开头的 URL,它会将该请求发送到 localhost:8008(C 程序)。请注意,在这种情况下,远程浏览器和 nginx 之间的流量必须加密。
你认为这可能吗?如果是,怎么做?
我知道如何使用两个不同的端口来做到这一点。我面临的挑战是仅使用一个端口来完成此操作(不幸的是,我无法控制此特定环境中的防火墙配置,因此这是我无法避免的限制)。使用诸如通过 ssh 进行反向端口转发来绕过防火墙的技术也不起作用,因为这应该适用于只有 Web 浏览器和 Internet 链接的远程用户。
如果这超出了 nginx 的能力,您知道还有其他产品可以满足此要求吗?(到目前为止,我在使用 lighttpd 和 pound 进行设置时没有成功)。我也更喜欢避免使用 Apache(尽管如果这是唯一可能的选择,我愿意使用它)。
提前致谢,亚历克斯
[*] 为了清楚起见,我说的是通过同一端口处理加密和未加密的 HTTP 连接。加密是通过 SSL 还是 TLS 完成都没有关系。
如果连接是通过 HTTPS 建立的,那么 URL 中包含的数据是否可以被视为安全?例如,如果用户单击电子邮件中指向https://mysite.com?mysecretstring=1234的链接,攻击者是否有可能从 URL 中获取“mysecretstring”?
我有两个由 CentOS 实例提供服务的网站。其中一个启用了 SSL,另一个仅在端口 80 上提供服务。
所以,http://siteone.com和https://siteone.com两个做工精细,一样http://sitetwo.com。
问题是https://sitetwo.com显示https://siteone.com.
我有一个可用的公共 IP 地址。
我认为我无法从一个 IP 为两个 https 站点提供服务,但是否至少有一种方法可以将 https 重定向到端口 80,https://sitetwo.com而不是为错误的站点提供服务?
sudo apachectl -S
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using xxx.xxx.xxx.xxx. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
?
xxx.xxx.xxx.xxx:443 siteone.com (/etc/httpd/sites-enabled/ssl-siteone.conf:1)
*:80 is a NameVirtualHost
default server beta-siteone (/etc/httpd/sites-enabled/beta-siteone.conf:1)
port 80 namevhost beta-ilegis (/etc/httpd/sites-enabled/beta-siteone.conf:1)
alias beta.siteone.com
port 80 …Run Code Online (Sandbox Code Playgroud) 我的理解是,当 Apache 收到对它正在侦听的 TCP 端口之一(例如 80、443)的请求时,它将通过查看 HTTP 标头来决定正在请求哪个主机Host。然后服务器将知道它应该将请求重定向到哪个虚拟主机。
但是它对基于 SSL/TLS 的 HTTP 是如何工作的呢?由于整个 HTTP 请求都被加密(至少我相信我在某处读到过),因此只有在服务器解密数据后才能读取标头信息。但是为了解密,它需要知道要使用哪个密钥对,因为您可以在 Web 服务器上安装多个 SSL 证书。
那么服务器如何知道解密需要哪个密钥呢?
我可以想象 TLS 握手提供了必要的信息。
虽然我同意链接问题的答案和我自己的答案相似,但我必须说问题是不同的。是否或如何使用独立的 SSL 证书托管多个站点是毫无疑问的。相反,我的问题涉及潜在的技术方面。
https ×10
ssl ×4
apache-2.2 ×2
nginx ×2
centos ×1
http ×1
iis ×1
lighttpd ×1
security ×1
sni ×1
timeout ×1
url ×1
virtualhost ×1
web-server ×1
windows-10 ×1