Articles of https

了解NGINX HTTP到HTTPSredirect

我已经设置nginxredirectHTTPstream量到HTTPS是这样的: server { listen 80; server_name git.mydomain.it; return 301 https://$host$request_uri; } 我可以通过HTTPS和HTTP成功连接。 当我做git clone http://git.mydomain.it/oznt/tracker.git我被提示正确的URL: $ git clone http://git.mydomain.it/oznt/tracker.git Cloning into 'tracker'… Username for 'https://git.mydomain.it': 到现在为止还挺好。 但是我想知道当我input密码时会发生什么。 它是受保护的,就好像我直接连接到https://git.mydomain.it或者是第一次在明确的文本传输到HTTP端点,然后被redirect?

在SSL + Nginx上,rails authenticate_or_request_with_http_basic不起作用

我已经通过authenticate_or_request_with_http_basic获得了我的Rails 3应用程序中的一个动作。 在我的开发机器上工作正常,但它并没有提示生产服务器上的http_basic用户/密码。 整个生产应用程序通过https / SSL在nginx上运行。 我在哪里可以解决这个问题? http basic auth不能通过SSL工作? 还是有一个nginx设置,我需要看看? TIA

使用nginx代理无HTTPS证书

是否有可能设置nginx,以便它代理一个HTTPS连接而不解密它? 我正在谈论这样的事情: server { listen 443 ssl; server_name example.com; location / { proxy_pass https://localhost:8000; proxy_set_header X-Real-IP $remote_addr; } } 我知道,nginx最有可能需要一个证书来添加X-Real-IP头,但是我可以重新encryption代理吗? 我的动机是,我想通过stream量到我的Node应用程序,启用了SPDY。 但是为了能够在Node中使用SPDY,我需要解密才能驻留在应用程序中。

在Rails 3应用程序中使用NGINX和Unicorn服务资产VIA SSL

我已经build立了我的rails应用程序,效果很好。 不幸的是,在网站的https://版本中,我的资产都没有被提供…任何想法为什么会发生这种情况? 所有资产都通过http://提供,但没有任何通过https:// 帮帮我? =============代码============== upstream unicorn { server unix:/tmp/unicorn.XXX.sock fail_timeout=0; } server { listen 80 default; server_name example.com; root /home/deployer/apps/XXX/current/public; location ^~ /assets/ { gzip_static on; expires max; add_header Cache-Control public; } try_files $uri/index.html $uri @unicorn; location @unicorn { proxy_set_header X-Forwarded-Proto http; proxy_pass http://unicorn; } error_page 500 502 503 504 /500.html; client_max_body_size 5G; keepalive_timeout […]

无法访问Sentry日志服务器:发生违反协议的EOF

我在HTTPS模式下设置Sentry服务器时遇到问题。 时不时的,这个错误信息会被Raven(Sentry客户端)写入日志文件: Unable to reach Sentry log server: <urlopen error [Errno 8] _ssl.c:504: EOF occurred in violation of protocol> (url: https://$(valid_server)/) Web UI工作正常。 来自Raven的大部分消息都被收到,Sentry将它们处理成可用的输出。 但是,由于这些错误,有时会丢失一些东西。 我试图找出这一个,但死胡同似乎跟随另一个。 基本上看起来很像这样: Python请求requests.exceptions.SSLError:[Errno 8] _ssl.c:504:EOF违反协议 但是当用类似的s_client查询使用TLS 1.2来testing我的Sentry服务器时,它会导致一个有效的会话,与那里的例子不同。 这也不是关于这个,因为不使用SNI: python-requests 2.0.0 – [Errno 8] _ssl.c:504:EOF违反协议 我无法连贯地重现错误。 Raven的testing通过,没有什么是严重错误的,直到日志中popup一个错误。 我的设置是:Raven 4.2.1在Python 2.7.5中,Nginx 1.6.0作为反向代理处理HTTPS,最后是Sentry 6.4.4,默认使用Gunicorn 0.17.4。 Nginxconfiguration与官方文档( http://sentry.readthedocs.org/en/latest/quickstart/nginx.html )非常相似,只是由于HTTPS的一些改动。

SSL客户端证书不是由python的'requests'库或者s_client发送的,但是在web浏览器中工作正常

我正在尝试使用Python编写客户端脚本,访问Web应用程序并使用SSL客户端证书进行身份validation。 尽pipe我可以从Firefox和Chrome访问应用程序,只要我已经加载了客户端证书,每当我通过Python请求发送请求时,我会得到以下响应: 400 No required SSL certificate was sent nginx/1.4.6 (Ubuntu) 我也尝试过Python httplib,s_client和curl,并得到相同的错误信息。 我使用相同的客户端证书进行所有testing,使用pkcs12格式的Web浏览器,并将其导出到命令行工具的证书和关键PEM文件中。 我的Python代码如下所示: import requests CERT = r'/path/to/cert.crt' #Client certificate KEY = r'/path/to/key.key' #Client private key CACERT = r'/path/to/ca.crt' #Server certificate chain session = requests.Session() session.cert = (CERT, KEY) resp = session.get('https://my.webapp.com/', verify=CACERT) print resp.content session.close() s_client给出了关于正在发生的事情的更多信息。 以下是输出的缩写版本: $ openssl s_client -cert cert.crt […]

nginx SSL握手失败,对来自移动设备的请求使用“SSL_BYTES_TO_CIPHER_LIST:不恰当的回退”

我试图find这个错误的解决scheme(完整的错误消息是[crit] 556#0: *1940 SSL_do_handshake() failed (SSL: error:140A1175:SSL routines:SSL_BYTES_TO_CIPHER_LIST:inappropriate fallback) while SSL handshaking, client: xx.xx.xx.xx, server: 0.0.0.0:443 ) 我已经阅读了多个类似的问题(比如这个或者这个 ,但是他们都用浏览器来处理这个问题,我的客户端是移动应用程序。 另外,他们TLS_FALLBACK_SCSV openssl中有/没有启用TLS_FALLBACK_SCSV 。 在find关于nginx上强大的SSL安全性的教程后,我更加困惑。 在教程中,它说 OpenSSL 1.0.1在1.0.1j及更高版本中有TLSFALLBACKSCSV。 在我的系统(Ubuntu可靠)我得到 # openssl version OpenSSL 1.0.1f 6 Jan 2014 我试过升级到更新的版本,但这似乎是Ubuntu可靠的最新版本。 值得一提的是,这个错误最近才开始发生,没有明显的原因。 错误总是不显示(行为实际上是相当随机的)。 然而,这是令人担忧的,因为这些不成功的请求,他们的频率越来越高,重要的数据正在丢失。 任何帮助将不胜感激。 谢谢。

NGINXredirect到HTTPS只在刷新后才起作用

我想要stream量去https://example.com 。 没有www前缀是允许的,并且需要SSL 。 我们遇到的问题是许多(不是全部)首次访问者在刷新之前没有被redirect到HTTPS。 你看到什么在我的configuration,将允许这种行为? server { listen 80; listen 443 ssl; server_name www.example.com; return 301 https://example.com$request_uri; } server { listen 80; listen 443 ssl; server_name example.com; root /var/www/html/mm; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-Port 443; proxy_set_header Host $http_host; add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"; client_max_body_size 200m; location / { […]

使用certbot申请Let's Encrypt证书:失败的授权程序

我使用certbot申请Let's Encrypt证书,我的服务器是centos 7.2和nginx 1.11.9 。 这是什么意思? [root@test ~]# certbot certonly –webroot -w /var/www/www.example.com -d example.com -d www.example.com Failed authorization procedure. example.com (http-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://example.com/.well-known/acme-ch <head><title>404 Not Found</title></head> <body bgcolor="white"> <center><h1>404 Not Found</h1></center> <hr><center>", www.example.com (http-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response […]

BottlyPy – 如何阅读UWSGI_SCHEME?

我有一个使用BottlePy运行的Python应用程序。 此应用程序由Nginx路由: listen 443; ssl on; … location / { include uwsgi_params; uwsgi_param UWSGI_SCHEME https; uwsgi_pass unix:///var/run/uwsgi/uwsgi.sock; } 因为我使用的是BottlePy微框架,我不能调用request.is_secure() (没有这样的方法)。 但有没有办法从代码读取UWSGI_SCHEME值? 我的目标是从代码中确定请求使用了HTTPS。