标签: https

RHEL Nginx SSL 与非 SSL 性能差异巨大。

我正在设置 Nginx 1.8 反向代理。

简而言之 -

提供 HTML 内容 HTTP 流量比 HTTPS 快 50 倍。

提供 ProxyPass HTTP 流量的速度比 HTTPS 快 7 倍。

操作系统是 RHEL7

硬件:

2 core VMWare Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz
cpu MHz         : 1897.802
cache size      : 15360 KB
bogomips        : 3795.60
1 Gbit network card
Run Code Online (Sandbox Code Playgroud)

基准测试客户端是 Apache bench,1 跳远,ping 1ms。Apache bench 在运行时使用以下 TLS 协议:

TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256
Run Code Online (Sandbox Code Playgroud)

服务器 SSL 证书 2048 位 RSA。OCSP 装订已打开并已验证。

/etc/sysctl.conf 有

net.ipv4.ip_local_port_range=1024 65000
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_fin_timeout=15
net.core.netdev_max_backlog=4096
net.core.rmem_max=16777216
net.core.somaxconn=4096
net.core.wmem_max=16777216
net.ipv4.tcp_max_syn_backlog=20480 …
Run Code Online (Sandbox Code Playgroud)

ssl http redhat nginx https

4
推荐指数
1
解决办法
2239
查看次数

iptables 只允许 ssh 和 https

我正在尝试在我的设备上配置 iptables,以便仅允许SSHHTTPS流量。特别是,HTTPS 协议用于从 Java 客户端向远程服务器调用某些REST API

这是我的 iptables:

iptables -F

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

#SSH
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

#DNS
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

#HTTPS
iptables -A OUTPUT -p tcp --sport 443 -j ACCEPT
iptables -A INPUT -p tcp …
Run Code Online (Sandbox Code Playgroud)

linux firewall ssh https iptables

4
推荐指数
1
解决办法
1万
查看次数

如何在支持 http2 的 CentOS 7 上构建 Apache httpd 2.4.20?

我花了将近一天的时间尝试为我的公司和社会使用 ALPN 和 http2 支持 EL6 和 EL7 的 Apache httpd 构建,就像我之前为 NGINX 所做的那样(针对 OpenSSL 1.0.2h 静态构建)。

首先,我尝试使用从 Fedora 获取的 OpenSSL 1.0.2h 重建 src rpms 并安装结果 rpms (openssl-devel-1.0.2h-1.el7.centos.x86_64.rpm, openssl-1.0.2h-1.el7.centos .x86_64.rpm) 来替换系统的。是的,我知道,这对于公共构建来说不是正确的方式,但我需要知道是否会起作用。

然后我重建了 nghttp2-1.7.1-1.fc24.src.rpm 并安装了结果 libnghttp2-devel-1.7.1-1.el7.centos.x86_64.rpm 和 libnghttp2-1.7.1-1.el7.centos .x86_64.rpm。

最后,在删除了一些补丁并破解了 apr 和 apr-util 之后,我成功地将 httpd-2.4.18-1.fc23.src.rpm 构建到了 httpd-2.4.18-1.el7.centos.x86_64.rpm。

普通的 HTTP/1.1 对我有用,而且还支持 ALPN,但 HTTP/2 不起作用:

$ curl -v --insecure --http2 --tlsv1.2 https://192.168.1.148
* Rebuilt URL to: https://192.168.1.148/
*   Trying 192.168.1.148...
* Connected to 192.168.1.148 (192.168.1.148) port 443 (#0)
* Initializing NSS …
Run Code Online (Sandbox Code Playgroud)

ssl https httpd apache-2.4 http2

4
推荐指数
1
解决办法
3300
查看次数

使用虚拟化网络的 Docker >= 1.10 中的 HTTPS 请求失败

我遇到了一个问题,即无法从版本为 1.10.3 或 1.11.2 的 Docker 容器内部建立 HTTPS 连接。

我尝试了 apt-get、curl 和 wget,但一旦建立了 HTTPS 连接,一切都失败了。

例如,以下命令失败:

$ docker run -it ubuntu-curl curl -v https://www.google.com
[...]
* gnutls_handshake() failed: Error in the pull function.
* Closing connection 0
Run Code Online (Sandbox Code Playgroud)

Docker 映像ubuntu-curl基于ubuntu:latest,唯一的变化是apt-get update ; apt-get install curl.

如果我使用 HTTP 而不是 HTTPs,它会起作用。如果我从主机发出相同的命令,它就可以工作。如果我在没有网络虚拟化(docker run --net="host")的情况下启动容器,它就可以工作。如果我降级 Docker(我尝试了 1.6.2 和 1.9.1),它也能正常工作。

任何提示可能有什么问题?我尝试了两台主机,Ubuntu 14 LTS 和 CoreOS stable,没有相关的定制——都在 OpenStack 集群中运行。

主机的 iptables(虽然我不明白为什么 iptables 应该只阻止 HTTPs 流量):

$ …
Run Code Online (Sandbox Code Playgroud)

https docker

4
推荐指数
1
解决办法
1768
查看次数

Nginx 反向代理透传客户端证书

我正在尝试通过 Nginx 反向代理设置负载均衡器。我的应用程序使用客户端证书来验证客户端。我希望我的反向代理将客户端证书转发到我的后端服务器。我已将此行添加到反向代理的配置中,以将客户端证书信息存储在自定义 HTTP 标头中:

proxy_set_header X-SSL-CERT $ssl_client_cert
Run Code Online (Sandbox Code Playgroud)

但是,$ssl_client_cert使用多行来存储证书,并且我的后端 nginx 服务器无法将其正确识别为一个 HTTP 标头。实现转发我的客户证书的最佳方法是什么?

这个问题在 2013 年在这个论坛上被问过,但到目前为止还没有真正的解决方案:https : //forum.nginx.org/read.php?2,236546,236546

谢谢!

ssl nginx https reverse-proxy http-headers

4
推荐指数
1
解决办法
1万
查看次数

在 AWS ELB 上强制使用 HTTPS

我使用自定义域在 AWS ELB 上托管了一个基于 Java 的小型 JAR 打包 web 应用程序。我上传了一个 ZIP 文件,如:

myapp.zip
* myapp.jar
Run Code Online (Sandbox Code Playgroud)

我已经配置使用AWS CM证书,我能够同时通过访问我的应用程序http://www.example.com以及https://www.example.com

现在我需要始终强制使用HTTPS 。我完全不知道该怎么做。

我看到了许多答案,例如“配置您的 nginx”:

/sf/ask/1722253431/ https://aws.amazon.com/de/premiumsupport/knowledge-center/redirect-http-https-elb / http://www.emind.co/how-to/how-to-force-https-behind-aws-elb/

其他答案也朝着相同的方向发展。

虽然我可以理解重写规则的想法,例如:

if ($http_x_forwarded_proto = 'http') {
    return 301 https://www.example.com$request_uri;
}
Run Code Online (Sandbox Code Playgroud)

我缺少的是如何实际将其添加到 AWS ELB nginx。

我最后尝试的是添加.ebextensions\nginx\conf.d\my.conf到我的 ZIP 档案中:

myapp.zip
* myapp.jar
* .ebextensions
  * nginx
    * conf.d
      * my.conf
Run Code Online (Sandbox Code Playgroud)

内容:

if ($http_x_forwarded_proto = 'http') {
    return 301 https://www.example.com$request_uri;
}
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:

2016/12/24 12:08:27 [emerg] 22709#0: …
Run Code Online (Sandbox Code Playgroud)

nginx https amazon-web-services amazon-elb

4
推荐指数
1
解决办法
3796
查看次数

Mikrotik - 将 YouTube 重定向到本地友好页面

我正在配置 rb750。我想放弃 YouTube 访问权限并重定向到位于我们本地网络服务器中的友好页面。我可以放弃使用 l7 防火墙,但我无法重定向用户,因为 https。具体来说,你管使用某种技术来阻止这种“拦截”。我也尝试过 dnat 和 DNS,但两者都不起作用:(。我已经阅读了适用于 chrome、Firefox 和其他产品的 hsts(https 严格传输安全),并在网站导航期间允许完整的 https,这就是为什么我不能这样做。你们有什么想法吗?

https mikrotik redirect dnat hsts

4
推荐指数
1
解决办法
2471
查看次数

Nginx:将 HTTPS 站点重定向到 www HTTPS,需要证书吗?

我有一个证书example.com,并www.example.com与以下配置:

server {
    listen              443 ssl;
    listen              [::]:443 ssl;
    server_name         example.com;
    return              301 https://www.example.com$request_uri;
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试重定向到www.example.com,并且在我访问https://example.com. 我成功重定向。但我不明白它为什么有效。301 重定向应该通过 SSL 发生,但我没有指定证书。怎么可能呢?

另外,推荐的方法是什么?只是在上面的块中添加证书吗?

nginx https

4
推荐指数
1
解决办法
8224
查看次数

Nginx 中的 HSTS:是否也应该在子域服务器块中添加 Strict-Transport-Security 标头?

让我们采取以下nginx.conf与配置文件server的块example.comsubdomain.example.com

http {
    ...

    server {
        listen [::]:80 ipv6only=off default_server;
        server_name example.com;
        return 301 https://example.com$request_uri;
    }
    server {
        listen [::]:443 ipv6only=off ssl default_server;
        server_name example.com;
        add_header Strict-Transport-Security
            "max-age=63072000; includeSubDomains; preload" always;
        ...
    }

    server {
        listen [::]:80 ipv6only=off;
        server_name subdomain.example.com;
        return 301 https://subdomain.example.com$request_uri;
    }
    server {
        listen [::]:443 ipv6only=off ssl;
        server_name subdomain.example.com;
        add_header Strict-Transport-Security
            "max-age=63072000; includeSubDomains; preload" always; # <-- again ???
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

includeSubDomains标题的部分显然告诉浏览器标题也适用于所有子域。

但是,如果该浏览器subdomain.example.com在看到 之前访问example.com …

ssl http nginx https http-headers

4
推荐指数
2
解决办法
3188
查看次数

无法在 Firefox 中添加自签名证书

我需要设置一个可供少数有限用户访问的 IIS 网络服务器。我正在考虑仅使用自签名证书,并在用户系统上手动安装它。

因此,我使用 IIS 工具生成了证书,将其安装在网络服务器上,并将其导出为 .cer 文件。将其添加到 Windows 设置中的受信任机构与 Internet Explorer 配合良好:它删除了不安全警告。

在 Firefox 中,我无法让它工作。启用 security.enterprise_roots.enabled 选项没有帮助。在 Firefox 证书设置中,我无法将其导入权限面板,我收到一条错误消息:

这不是证书颁发机构证书,因此无法导入到证书颁发机构列表中

我能做什么?我不想在 Firefox 中添加异常,因为它会永久禁用对 URL 的任何证书检查,这意味着任何中间人攻击都变得简单明了。如果服务器上的证书发生变化,我希望用户被阻止访问该网站。

iis certificate https firefox self-signed-certificate

4
推荐指数
1
解决办法
5185
查看次数