Articles of https

Nginx,authentication和强制HTTPS – 作为包含片段?

有点卡在这里。 我想要一个漂亮简单的Nginx“include”代码片段,它需要HTTP AUTH来包含它所在的位置,并强制redirect到HTTPS(如果还没有的话)。 我想出了这个: # /etc/nginx/snippets/requirelogin-staff.conf if ($https != "on") { return 301 https://$server_name$request_uri; } auth_ldap "Login Required"; auth_ldap_servers staff; 并像这样使用它(愚蠢的例子为了简洁起见,现实世界中我们有django服务/和/静态/作为资源文件的快捷方式): location / { include snippets/requirelogin-staff.conf; try_files $uri $uri/index.html $uri.html =404; location /static { alias /var/www/webroot/liv/static; } } 它适用于任何由位置/ wget -S显示它首先发出301redirect到相同的URL,但与https协议。 然后它回来了一个401正确。 问题是/静态下的URL auth通过指令inheritance踢进来。 但是,似乎“if($ https!=”on“)…”没有被inheritance到嵌套的位置块中。 所以wget -S会直接进入401,邀请用户使用不安全的连接login,这当然是一件坏事。 我可以看看为什么“如果”有问题(try_files不会inheritance)。 但是,这让我颇为困惑。 任何一种灵魂都可能提出一种更清洁的方法吗 一个原则是(理想情况下)我希望AUTH在一个或多个位置被一条整齐的单行“包含”所需,以避免错误。 inheritance将是很好的 – 再次避免错误。 […]

简单的Linux程序,可以接受任何HTTP / HTTPS请求并返回单个页面?

我有一个Linux操作系统作为路由器。 有一个连接到互联网(WAN)的NIC,连接到8端口GbE交换机(LAN)的NIC以及连接到Linksys无线N路由器(WLAN)的NIC。 一切之间的路由工作正常。 我在无线路由器上完全禁用了安全性,但WLAN网卡被防火墙限制,因此它只接受DNS查询和PPTP VPN连接。 目前HTTP / HTTPSstream量和其他一切被阻止。 我想运行一些在WLAN网卡的端口80/443上侦听的东西,对于非VPN连接,如果有任何HTTP / HTTPS请求,它将返回一个网页,说“未经身份validation”,并解释如何login到VPN。 一个透明的代理似乎是我所需要的,但我的search似乎都指向我的Squid,它已经在我的服务器上运行,似乎这个简单的任务矫枉过正。 有没有一个更简单,轻量级的程序,只是这样做,或者我应该把它吸了起来,运行两个Squid实例(或弄清楚如何configuration它)? 或者,我正在做的整个VPN的事情是完全废话,我应该只在无线路由器上启用encryption?

Apacheredirect到https进行基本身份validation

对于一个老问题,我有一个棘手的问题。 我有一个基于apache的网站,通常应该通过HTTP /端口80访问。但是对于某些需要身份validation的区域(通过.htaccess指定),我希望能够redirect用户https /端口443。 这里的关键是,我希望这总是发生的基本身份validation – 即我不希望重新创build每个htaccess文件与redirect指令。 我只想强制执行这个基本身份validation(其他stream量应该是未encryption的)。 保护区遍布整个工地。 有可能以某种方式将所有基本身份validation请求redirect到SSL主机?

反向代理从nginx到Apache的HTTPS

我有nginx作为一个Apache服务器的反向代理工作。 每个Apache服务器都坐在自己的虚拟容器中,以便彼此分离事物(因此,nginx反向代理不会进行负载平衡,只是将请求转发到适当的容器:站点A转到192.168.2.1,站点B转到192.168.2.2等)。 这里处理SSL的最好方法是什么? 从我可以谷歌,典型的方式似乎是在反向代理解密SSLstream量,然后将stream量作为正常的HTTP转发到代理服务器后面的服务器。 我并不太热衷于此,因为这意味着在代理服务器上安装证书,而不是在其后面的服务器上安装证书 – 而且如果可能的话,我想保留与它们相关的容器的证书。 但是,HTTPSstream量显然是encryption的,那么甚至有可能代理呢? 我猜不是,因为我没有遇到过很多“如何做”的东西,但是我觉得我会问一下蜂巢的思维。 任何指针将不胜感激:)

如何使用通过Java keytool与Nginx生成的SSL证书?

我使用Java keytool来生成一个“keystore”: keytool -genkey -alias example.com -keyalg RSA -keystore example.com.keystore 然后我生成了一个CSR(证书签名请求): keytool -certreq -keyalg RSA -alias example.com -file example.com.csr -keystore example.com.keystore 然后我颁发了一个证书,并将其保存在一个文本文件example.com.crt 现在我想用Nginx的这个证书。 我已将证书放在/etc/ssl/certs/example.com.cert并在/etc/ssl/certs/example.com.cert放置了我的“密钥库”(我认为它包含我的私钥?) 然后我configuration了Nginx, Nginx,SSL和vhosts 。 但是当我重新加载Nginx的configuration文件,我得到这个错误消息: sudo service nginx reload Reloading nginx configuration: [emerg]: SSL_CTX_use_certificate_chain_file("/etc/ssl/certs/myssl.crt") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line error:140DC009:SSL routines:SSL_CTX_use_certificate_chain_file:PEM lib) configuration file /etc/nginx/nginx.conf test failed 当我遵循相同的指南,并使用openssl生成SSL证书,它工作正常。 但使用Java的keytool我得到这个错误。 我如何使用Nginx的Java密钥工具使用SSL证书和密钥?

在Nginx中closures非HTTPS连接

我正在使用基本身份validation,用户在标题中发送他们的用户名密码。 这些请求将通过HTTPS进行安全性(因为密码将以纯文本格式)。 如果用户不小心通过HTTP发出请求,在nginx中有没有办法在发送授权头之前closures连接? 我担心,如果我只是将它们redirect到HTTPS,他们的密码仍然会以纯文本的forms发送给第一个请求。

某些Android设备上的SSL出现SNI错误

我收到一个SNI错误: Hostname X provided via SNI, but no hostname provided in HTTP request 在某些Android手机上向我的网域发送SSL请求时。 这是尽pipe确保主机头设置在客户端上。 我也试过设置: SSLStrictSNIVHostCheck off 在我的Apache的conf,但我仍然看到这个错误。 有人能指点我吗?

使用HTTPS将所有子域redirect到主域,而不使用通配符证书(nginx)

我有一个主站点和几个虚拟主机的域名。 我希望所有网站(主要和虚拟主机)只能通过HTTPS(使用HSTS)访问,我希望不存在的子域被redirect到主站点。 总结一下我想要的: https:/example.com:无redirect(主站点) http:/example.com:redirect到https:/example.com https:/vhost.example.com:无redirect(虚拟主机) http:/vhost.example.com:redirect到https:/vhost.example.com https:/doesntexist.example.com:redirect到https:/example.com http:/doesntexist.example.com:redirect到https:/example.com 我非常接近这一点,但倒数第二次redirect不起作用。 我正在使用来自Let's Encrypt的证书,此证书目前不提供通配证书,因此证书仅对主域和虚拟主机(我在创build证书时明确列出)有效。 由于证书无效,浏览器会阻止连接。 如何避免这个问题,最好的办法是什么? 这是我的(简化)nginxconfiguration,如果有帮助: server { listen 80; server_name _; return 301 https://example.com$request_uri; } server { listen 443 spdy; server_name _; # SSL settings snipped for brevity. SPDY and HSTS are enabled. return 301 https://example.com$request_uri; } server { listen 443 spdy; server_name example.com; root […]

在JBoss 5上设置SSL

如何在Linux(Red Hat – Fedora 8)盒子上的JBoss 5上启用SSL? 我到目前为止所做的是: (1)创build一个testing密钥库。 (2)将新生成的server.keystore放置在$ JBOSS_HOME / server / default / conf中 (3)在$ JBOSS_HOME / server / default / deploy / jbossweb.sar中的server.xml中进行以下更改以包含此内容: <!– SSL/TLS Connector configuration using the admin devl guide keystore –> <Connector protocol="HTTP/1.1" SSLEnabled="true" port="8443" address="${jboss.bind.address}" scheme="https" secure="true" clientAuth="false" keystoreFile="${jboss.server.home.dir}/conf/server.keystore" keystorePass="mypassword" sslProtocol = "TLS" /> (4)问题是,当JBoss启动时它会logging这个exception(在启动过程中)(但是我仍然可以查看http:// localhost:8080 /下的所有东西): 03:59:54,780 […]

CDN,支持自定义SSL超过自定义域

SSL是最大的问题:S3 / Cloudfront不支持它。 Rackspace CloudFiles刚刚告诉我,他们会在2011年第二季度支持它。MaxCDN告诉我,它的299美元安装费和299美元的月租费。 基于MaxCDN我甚至不想试图问edgecast或类似的CDN。 有谁知道一个好的解决scheme? 我认为Softlayer支持自定义SSL,但我不能在界面中find它。 谢谢!