我在Ubuntu 14.04上安装了最新的nginx版本。 我主持了几个网站,无论是有和没有SSL。 我的问题是,每次尝试在非SSL主机上设置新网站时,当我尝试访问该主机时,nginx都会redirect到同一主机的SSL版本(即使SSL没有服务器块对于特定的主机),并从同一台服务器上的随机Web应用程序呈现内容,同样触发SSL证书不匹配。 任何想法可能是错的? 下面是我尝试设置的非SSL主机的nginx conf: server { listen 80; listen [::]:80; server_name some.domain.eu; root /usr/share/nginx/some.domain.eu/html; index index.php index.html index.htm; error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # pass the PHP scripts to FastCGI server listening on the php-fpm socket location ~ \.php$ { try_files […]
今天,我注意到OpenSSL和浏览器(Firefox,Chrome)为我提供了不同的网站证书链。 OpenSSL显示来自“GTE CyberTrust Global Root”的根证书,Firefox和Chrome显示“Baltimore CyberTrust Root”的根证书。 这里是运行“openssl”的证书链输出: openssl s_client -connect "WEBSITE.com:443" -servername WEBSITE.com … … Certificate chain 0 s:/C=US/ST=NY/L=New York/O=Company/OU=Company/CN=*.WEBSITE.com i:/C=NL/L=Amsterdam/O=Verizon Enterprise Solutions/OU=Cybertrust/CN=Verizon Akamai SureServer CA G14-SHA2 1 s:/C=NL/L=Amsterdam/O=Verizon Enterprise Solutions/OU=Cybertrust/CN=Verizon Akamai SureServer CA G14-SHA2 i:/C=IE/O=Baltimore/OU=CyberTrust/CN=Baltimore CyberTrust Root 2 s:/C=IE/O=Baltimore/OU=CyberTrust/CN=Baltimore CyberTrust Root i:/C=US/O=GTE Corporation/OU=GTE CyberTrust Solutions, Inc./CN=GTE CyberTrust Global Root “GTE CyberTrust Global Root”是一个1024位的证书。 […]
我将下面的nginx.conf文件设置为处理http和https。 我目前正在使用自签名证书来testingssl。 server { listen 80; listen 443 ssl; server_name localhost; ssl_certificate /etc/nginx/ssl/nginx.crt; ssl_certificate_key /etc/nginx/ssl/nginx.key; location / { proxy_pass http://node:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /socketcluster/ { proxy_pass http://node:8000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; } 当我尝试通过本地连接。 http,https&ws://似乎工作正常。 但是,当客户端尝试通过wss://连接时。 我得到下面的错误 WebSocket connection to 'wss://localhost:80/socketcluster/' […]
我有一个VPS有14个域名,我设置了letkencrypt自动为每个包含所有子域名的域名检索一个单独的证书。 所以,我有14个证书。 很显然,将所有域名放在同一个证书中是不可取的,因为很快我将为Letsencrypt的每个证书创build最多100个域/子域。 所以,我很高兴一个月,直到我发现nginx为除了一个(它自动提取 – 或者我将设置 – 作为端口443的默认服务器)之外的所有域提供错误的证书。 经过很多头痛之后,我发现每个SSL证书都必须有自己的IP,而不是共享的IP。 然后我也发现有SNI作为解决这个问题的方法。 $ nginx -V TLS SNI support enabled 所以长话短说; 问题是不pipe我做什么nginx固执地服务了错误的cert: $ curl –insecure -v https://babaei.net 2>&1 | awk 'BEGIN { cert=0 } /^\* Server certificate:/ { cert=1 } /^\*/ { if (cert) print }' * Server certificate: * subject: CN=babaei.net * start date: Aug 28 13:30:00 […]
我是SSL证书领域的新手。 我的SSL证书已过期,并且已经收到来自我的CA的新证书。 目前我试过的select是用新的取代旧的。 但是我想安装新的证书而不删除旧的证书,稍后将https绑定更改为新安装的证书。 我现在还没有任何环境可以试用。 它会工作吗? 谢谢
我有一个互联网可访问的Apache服务器,启用SSL和工作。 在本地networking上,有另一台服务器通过http提供一个tomcat应用程序。 Apache服务器反向代理tomcat应用程序。 当通过http使用apache服务器时,tomcat应用程序被正确代理,但是当通过https使用它时,tomcat服务器返回404找不到的资源。 那么https请求是否被转换为http? 我宁愿不触摸tomcatconfiguration,因为这不是我的区域。 这是我的configuration: <VirtualHost *:443> ServerName ext-service.example.com SSLEngine on SSLCertificateFile /etc/apache2/ssl.crt/mycert.crt SSLCertificateKeyFile /etc/apache2/ssl.key/mykey.key SSLCertificateChainFile /etc/apache2/ssl.crt/mybundle.crt ProxyRequests Off ProxyPreserveHost Off <Proxy *> AddDefaultCharset off Order deny,allow Allow from all </Proxy> DocumentRoot /srv/www/empty/ ProxyPass / http://int-service.example.com/ ProxyPassReverse / http://int-service.example.com/ </VirtualHost>
我刚刚获得了一个新的SSL证书,这个证书以前被通配符SSL证书所覆盖。 它已经安装了一个多星期,大约有99%的用户没有问题。 现在只有一个或两个(我知道)得到一个“网站不受信任”的警告,所以我假设他们在连接时看到旧的证书。 有没有办法强制所有的浏览器使用新的SSL证书时,他们连接? (它在Ubuntu上是一个NGINX)
处理configuration相互TLS(客户端证书)时遇到问题的客户。 根据我的经验,TLS客户端身份validation是由服务器拥有证书,并告诉客户端发送由第一个证书签名的证书。 客户端发送一个(与它签署的东西),服务器validation。 客户正试图在服务器的信任存储中使用CA证书。 在他们的情况下,任何人都可以从该CA申请证书。 所以,这不会与上述 – 因为任何人都可以从CA获得身份certificate并连接。 此行为似乎是Java默认值。 在过去,这是我所采取的方法 – 使用中间证书或可以控制的CA。 我知道一个自定义的Java TrustManager可以在客户端上实现发送任何证书,而不pipe它的来源。 我也知道curl会这样做(忽略CertificateRequest中的证书颁发机构)。 使用这种方法,您可以使用身份证书,而不是CA,所以客户端和服务器可以使用相同的证书,而不pipe其来源。 这里最好的做法是什么? 客户是否提出了合理的要求? 我们也有一个Windows服务器来configuration下一个,我不知道它将如何处理这种行为。 编辑: RFC似乎使此行为可选。 certificate_authorities:可接受的certificate_authorities的可分辨名称[X501]的列表,以DER编码格式表示。 这些专有名称可以为根CA或从属CA指定所需的可分辨名称; 因此,这个消息可以用来描述已知的根以及所需的授权空间。 如果certificate_authorities列表为空,则客户端可以发送任何适当ClientCertificateType的证书,除非有相反的外部安排。 https://tools.ietf.org/html/rfc5246#section-7.4.4
我已经在ubuntu 16.04上设置了apache2.4.1,以便在端口80和443上同时处理http和https通信。我可以浏览到这两个站点,没有任何问题。 服务器可以通过公共IP和私有IP进行访问 – 远程api服务通过vpn将stream量发送到我的服务器。 这是我的apachectl -S结果 *:80 APPSERVER.example.com (/etc/apache2/sites-enabled/000-default.conf:1) *:443 is a NameVirtualHost default server APPSERVER.example.com (/etc/apache2/sites-enabled/000-default-ssl.conf:2) port 443 namevhost APPSERVER.example.com (/etc/apache2/sites-enabled/000-default-ssl.conf:2) port 443 namevhost APPSERVER.example.com (/etc/apache2/sites- enabled/default-ssl.conf:2) ServerRoot: "/etc/apache2" Main DocumentRoot: "/var/www/html" Main ErrorLog: "/var/log/apache2/error.log" Mutex rewrite-map: using_defaults Mutex ssl-stapling-refresh: using_defaults Mutex ssl-stapling: using_defaults Mutex ssl-cache: using_defaults Mutex default: dir="/var/lock/apache2" mechanism=fcntl Mutex mpm-accept: […]
我想知道在代理上启用SSL是否足够,而不是在被代理的服务上。 当通信应该是https时,会不会有外部的问题(在客户端)?