Articles of https

IIS 7 WCF Web服务通过HTTPS提供404错误

我有一些运行在IIS 7.5下的WCF web服务,它们对http请求的响应是正确的,但是当使用SSL调用方法时,响应404(Not Found)错误。 该网站的绑定如下: 当调用http://127.0.0.1:8088/Public/PublicDataService.svc时,我得到了预期的响应: 你已经创build了一个服务。 要testing此服务,您需要创build一个客户端并使用它来调用该服务。 您可以使用命令行中的svcutil.exe工具使用以下语法来执行此操作:etc 同样调用任何Service方法都有效,有一个叫做CanConnect的最基本的方法,它只是返回“true” http://127.0.0.1:8088/Public/PublicDataService.svc/CanConnect 真正 当使用https时,结果如下。 https://127.0.0.1/Public/PublicDataService.svc 你已经创build了一个服务。 要testing此服务,您需要创build一个客户端并使用它来调用该服务。 您可以使用命令行中的svcutil.exe工具使用以下语法来执行此操作: https://127.0.0.1/Public/PublicDataService.svc/CanConnect “/公共”应用程序中的服务器错误。 无法find该资源。 说明:HTTP 404.您正在查找的资源(或其某个依赖项)可能已被删除,名称已更改或暂时不可用。 请检查以下URL并确保拼写正确。 请求的url:/Public/PublicDataService.svc/CanConnect 版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.6.1055.0 这让我完全陷入困境,怎么可以调用.svc的工作,但是其内部的方法给404呢? 为了使事情更令人困惑,这是工作…事实上,我甚至不知道什么时候停止,即如果它对应于代码版本或服务器补丁等。 网站的实际configuration是这样的: Webservices (this is the root of the application / where the Web.Config sits) – Public (a windows directory, no addition config) 有很多其他的服务直接在根目录下运行,在http和https下运行正常。 任何想法可能会导致这一点。

如何正确设置squid3作为HTTPS代理?

我想使用这里给出的教程来设置squid3作为HTTPS代理。 我在浏览器中正确设置了代理设置,当我尝试访问HTTP网站时,我能够成功连接。 但是,每当我点击一个HTTPS协议网站时,我都会收到“连接超时错误”,并在我的/var/log/squid3/cache.log出现以下错误: 2016/06/20 19:12:47| NF getsockopt(SO_ORIGINAL_DST) failed on local=<local_ip_address>:3129 remote=<remote_ip_address>:55209 FD 8 flags=33: (92) Protocol not available 这里是我的/etc/squid3/squid.conf文件(为简洁起见删除了注释行): auth_param basic program /usr/lib/squid3/basic_ncsa_auth /usr/etc/passwd auth_param basic casesensitive off auth_param basic credentialsttl 2 hours acl user_auth proxy_auth REQUIRED http_access allow user_auth acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # […]

让我们encryptioncertbot – 添加一个新的域到证书

我已经安装了certbot,并为我主持的几个域创build了一个证书,这个域名正在运行 – 我有一个覆盖所有域的证书。 现在我想添加一个新的域到证书。 我看到在/etc/letsencrypt/renewal/domain.com.conf中列出了域根/etc/letsencrypt/renewal/domain.com.conf并在/etc/letsencrypt/renewal/domain.com.conf添加了相关条目(在[[webroot_map]]部分下)。 我然后跑了 certbot-auto renew –force-renew 更新了证书(在浏览器中validation了证书颁发date),但新添加的域未在证书中列出。 我需要在哪里添加域以便将其添加到证书中?

阻止通过HTTPS直接访问networking服务器IP

类似这个和这个问题,我想阻止用户使用IP访问我的服务器。 对于HTTP(端口80),这工作正常,但不适用于HTTPS。 所以用户仍然可以inputhttps://<myip>访问networking服务器,nginx返回默authentication书。 顺便说一句,我在我的“通常的”服务器块(使用我的域名)使用HTTP2,所以我使用: listen 443 ssl http2; listen [::]:443 ssl http2; 我现在试图阻止HTTPS的IP访问: server { listen 443 ssl; listen [::]:443 ssl; server_name _; return 444; } 但不幸的是,这封锁了所有的HTTPS请求,无论域是否被使用。 我知道可能有必要阻止非SNI客户端,因为这些客户端当然不会将使用的域名提供给服务器,所以我没有问题。 (我的意思是不支持SNI的客户是老的…) 我通常宁愿在nginx中阻止这个,但是如果你有一些关于在防火墙级别(iptables)阻止的想法,我也会很高兴的赞赏这些。 如果你想争论为什么使用iptables阻塞更好,你也可以做到这一点,并说服我也阻止对IP的HTTP [或所有其他]请求。 一般来说,删除连接是好的(如nginx状态码444)。 但是有一个要求:我不想在configuration中明确地提到服务器的IP地址,因为它是一个dynamicIP,服务器使用dynamicDNS服务。 所以总之,这就是我想要达到的目的: 通过IP阻止访问 允许通过域名访问 阻止非SNI客户端是很好的 为此使用防火墙阻塞是很好的 丢弃连接是好的 而不提及服务器的IP地址 不通过HTTPS暴露域名 编辑:另一个失败的尝试。 我试图按照这个build议 ,使用这个configuration片段,这似乎是一个好事: if ($host != "example.com") { return 444; } 它也基本上工作,但是当我访问“https://”我看到,nginx起初已经发送HTTPS证书(包含域名),只有当我跳过连接警告,我看到它阻止访问。 这是合乎逻辑的,因为nginx只能在有HTTPS连接的情况下读取主机头,但此时nginx已经发送了包含域名的服务器证书,所以用户现在拥有域名并可以使用它重新连接,使整个IP阻止无用。 […]

在浏览器中忽略子域的HSTS

[从https://stackoverflow.com/questions/39937837/复制] 我有我的DNS设置指向local.example.com到127.0.0.1。 这样我就可以在现场和我的开发环境之间共享cookie。 在现场网站上激活HSTS,我的浏览器会自动尝试访问本地网站https://local.example.com/ ,因为我的开发服务器不支持SSL(我尝试在端口服务443)。 有没有办法指示我的浏览器(Chromium)忽略HSTS? (从我读到的, includeSubDomains是非常重要的,以避免cookie劫持攻击 – 基本上我只想包括自己的子域例外)。

服务器名称安全连接 – 宽松匹配

我们已经更新了我们的Apache部署configuration,以允许非www请求到我们的服务器( https://example.com )。 对于https连接,我们需要这样做,因为名称与证书不匹配。 这很好,最近我们注意到我们的本地部署安全环境( https://chris.example.com )也指向这个新的部署。 我们评论了新的部署,以确认这是造成它的变化。 我们推测这是来自我们设置的servername设置。 这是我们的初始设置: NameVirtualHost example.com:443 <VirtualHost example.com:443> ServerAdmin [email protected] DocumentRoot /var/www/html/www.example.com ServerName example.com SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP SSLProtocol all SSLCertificateFile /usr/local/ssl/crt/example2017.cert SSLCertificateKeyFile /usr/local/ssl/private/ssl2017.key SSLCACertificateFile /usr/local/ssl/crt/example2017intermediate.pem DirectoryIndex index.html DirectoryIndex index.php LogLevel notice ErrorLog /var/log/httpd/www.example.com/error.log LogFormat "%{%Y-%m-%d %H:%M:%S}t %a %u %A %p %m %U %q %>s \"%{User-agent}i\"" w3c_extended CustomLog /var/log/httpd/www.example.com/access.log […]

Apache DirectorySlash将HTTPS请求redirect回HTTP

用户请求: https://www.example.com/test : https://www.example.com/test HTTPS requests –> AWS ELB HTTPS Listener –> Apache HTTP 获取http://www.example.com/test Apache 由于DirectorySlash默认为On ,Apache将其redirect到http://www.example.com/test/ 。 用户结束HTTP请求: http://www.example.com/test/ : http://www.example.com/test/ AWS提供了HEAD来检测原始请求协议: %{HTTP:X-Forwarded-Proto} ,但是如何告诉Apache mod_dir DirectorySlash使用该头? 请在这种情况下通知您的解决scheme或解决方法。

CER / P7b证书的JBoss Httpsconfiguration失败

我的问题与此类似: Tomcat无法在密钥库中find密钥条目 我有一个CER文件,我使用下面的命令导入到JKS中: keytool -importcert -file codesign_Base64.cer -keystore imported_keystore.jks -alias my_alias 然后,我在jBoss的standalone.xml中有下面的configuration行。 <subsystem xmlns="urn:jboss:domain:web:1.1" native="false" default-virtual-server="default-host"> <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http" redirect-port="8443"/> <connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" enable-lookups="false" secure="true"> <ssl name="ssl" key-alias="my_alias " password="change_this" certificate-key-file="C:\Programs\Siemens\JBoss7.1.0\domain\configuration\imported_keystore.jks " protocol="TLSv1" verify-client="false"/> </connector> <virtual-server name="default-host" enable-welcome-root="false"> <alias name="localhost"/> <alias name="example.com"/> </virtual-server> </subsystem> 有了这个,当我尝试启动应用程序时,在jBoss日志文件中看到以下错误消息,描述了这种错误。 11:46:19,692 ERROR [org.apache.coyote.http11.Http11Protocol] (MSC service thread […]

如何在默认的Google负载均衡器上使用Google Container Engine启用HSTS?

我很想用我的GKE集群来设置HSTS,因为现在HTTP请求会在ingress.yml annotations设置后返回一个Google破碎的机器人404页面: kubernetes.io/ingress.allow-http: "false" 显然,在ingress.yml (即hsts-max-age和hsts-include-subdomains )中有这个选项,但据我所知,GKE不支持: https : //github.com/kubernetes/ingress/blob /7c749ede0a2d88f289279d61d04005e22f002104/docs/annotations.md#tls-related 我真的很想避免使用和维护一个自定义的Nginx负载平衡器,并失去Google的扩展,坚持默认的是一个强大的要求。 我也想避免让HTTP请求通过并处理redirect和我的应用程序中的HSTS头。 如果HSTS是不可能的,我可以生活在一个很好的redirect设置。 非常感谢!

在浏览器中隐藏客户证书对话框,同时仍允许客户端证书

我有一个nginx实例通过HTTPS提供Web应用程序。 Web应用程序同时提供浏览器和原生移动应用程序。 原生移动应用程序使用客户端证书作为附加authentication层,而Web浏览器仅使用用户名/密码。 浏览器和移动应用程序使用不同的path,但相同的TCP端点(IP /端口)。 问题是Web浏览器popup一个对话框,提示用户指定一个客户端证书。 取消这个对话框是完全正确的,因为它被configuration为在nginx中是可选的,证书的validation是在应用程序端完成的。 但是, 这对用户来说是非常混乱的 ,我需要弄清楚一个不显示对话框的方法。 我的要求: 要有不同的端点是非常困难的(两者都需要端口443,分配一个新的IP将很困难)。 请不要build议更改端点。 我很清楚这个解决scheme,如果一切都是绝对不可能的,这就是B计划,但是这将涉及到很多很多很多的IT头痛。 避免改变终点很容易,需要花费几天的时间。 除了改变端点之外,我完全控制客户端代码(即移动应用程序)以及服务器部署。 我可以根据需要更改协议,但需要在“普通”浏览器中支持HTTPS。 如果每个path很难有不同的客户端证书设置(这个老的线程似乎表示),我可以采取基于用户代理的select。 这不是安全问题,因为应用程序validation证书是否用于“敏感”path。 如果Nginx无法做到这一点,我会很乐意切换到另一个可以处理它的反向代理。 (Traefik,Apache,…?)