Articles of ssl

让OpenSSL ca.config文件与PHP一起工作?

我做了一堆search,但我找不到答案。 我在这里发布这个,因为它看起来更像是一个OpenSSL问题,而不是一个PHP,虽然我可以使用这个CAconfiguration从命令行创build证书,所以有一些PHP不喜欢它。 当在PHP中调用openssl_pkey_new()时,出现错误: Error loading request_extensions_section section v3_req of /path/to/ca.config 。 我通过configuration数组传递ca.config文件的path到openssl_pkey_new() ,PHP正在打开文件。 ca.config文件如下所示: [ ca ] default_ca = MyClientCA [ crl_ext ] issuerAltName=issuer:copy authorityKeyIdentifier=keyid:always [ MyClientCA ] dir = /site/path/ssl/ca new_certs_dir = $dir unique_subject = no certificate = $dir/MyClientCA.public database = $dir/certindex private_key = $dir/MyClientCA.key serial = $dir/MyClientCA.srl default_days = 3650 default_md = sha1 […]

无法通过局域网使用Squid代理访问SSLencryption的MAMP站点(非SSL站点工作正常)

我有一个运行在MAMP主机(mac os x)上的开发网站,我想在客户端机器上(也在移动设备上 – 所有mac os上)查看。 所有连接到相同的局域网(无线)。 我已经成功地在主机上设置了一个Squid代理,并且可以在普通浏览器中查看客户端上的HTTP主机。 但是我在查看SSLencryption的时遇到了一些麻烦。 在开发环境中使用SSL非常重要,因为我正在生产中使用它。 我希望有人能帮我弄清楚如何工作! 提前致谢。 我使用https://www.mydomain.dev:8899访问主机上的站点。 它在所有浏览器中都能正常工作。 本地IP:主机192.168.0.99 ,客户端192.168.0.98 。 我使用地址http://test.dev:8898在MAMP中设置了一个小testing虚拟主机,没有SSLencryption(它只是列出一个文件夹)。 我可以通过在浏览器中inputhttp://test.dev:8898在主机上访问它。 我创build了以下.pac文件,并将客户端计算机configuration为使用它进行代理configuration: function FindProxyForURL(url, host) { if (shExpMatch(url, "http://test.dev*")) { return "PROXY 192.168.0.99:3128; DIRECT"; } return "DIRECT"; } 当我启动squid时,通过下面显示的squidconfiguration,我确实可以在所有浏览器上访问客户端机器上的http://test.dev:8898 ,就像在主机上一样。 大。 现在我为dev站点设置了以下.pac文件: function FindProxyForURL(url, host) { if (shExpMatch(url, "https://www.mydomain.dev*")) { return "PROXY 192.168.0.99:3128; DIRECT"; } return "DIRECT"; […]

Wireshark不解密TLS数据包

我无法理解为什么解密在这里不起作用。 考虑这个pcap文件中的场景 – https://drive.google.com/open?id=0Bz5corUPBatBWWpXTFYwWjdfS0k 我有这样的networking设置 Internet Server (104.31.17.3)<———> (eth1) Gateway (192.168.151.19) (eth0) <———-> Client (192.168.151.15) 对于这个捕获的上下文,我使用filtertcp和!ssh,并且只对从帧#22到帧#98的帧感兴趣 解释这些框架之间发生的事情 – 帧22-30是TLS握手。 第31帧是GET请求。 这由防火墙规则放弃。 对于相同的GET请求,帧32-35是一些重传(见包的长度等) 第38-86帧是客户端计算机(进行GET请求的客户端计算机)和网关计算机进行交互。 (rsync + ssh通信 – 请参阅帧中的端口号22)第61帧只是GET请求的另一个重新传输。 为客户端的GET请求重新发送帧87。 帧86和87之间的时间差是0.9秒(在此期间更新了一些防火墙规则)。 第88帧是服务器响应并包含TLS应用程序数据的时间。 Wireshark无法解密我感兴趣的帧88。 解剖器代码被修改时,debugging文件不容易阅读。 (在其他用途​​所需的循环中使用ssl_debug_printf语句)。 请使用以下命令来读取debugging文件。 “-C参数打印grepstring后面的下一行# cat debug.txt | grep -C 10 "frame #88" 我不明白为什么Wireshark无法解密TLS应用程序数据包。 数据包属于同一个TCPstream,TCP端口号和SSL对话。 SSL状态与初始GET请求(由于防火墙规则而丢弃的请求 – 第31帧)相同。

PHP $ _SERVER 是空的

我想要做的是通过客户端证书到我的PHP页面。 为了testing,我在Linuxterminal上使用curl : curl –cert cert.pem 'https://example.com/test.php' 在test.php ,我已经设置为打印$_SERVER超全局: <?php print_r($_SERVER); ?> 在Apache中,我有以下选项: <IfModule mod_ssl.c> <VirtualHost _default_:443> … SSLVerifyClient optional_no_ca SSLVerifyDepth 1 SSLOptions +StdEnvVars +ExportCertData … </VirtualHost> </IfModule> 在执行我的curl命令后,我看到$_SERVER['SSL_CLIENT_CERT']variables是空的: Array ( [HTTPS] => on [SSL_TLS_SNI] => example.com [SSL_SERVER_CERT] => — REDACTED — [SSL_CLIENT_CERT] => [HTTP_USER_AGENT] => curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3 [HTTP_HOST] => […]

在远程(AWS)Tomcat上,在开发系统上创build的Keystore + CSR不起作用

我面临非常奇怪的情况。 我已经在我的本地/ dev机器上使用keytool命令创build了keystore + CSR。 我从https://www.thawte.com/获得了SSL证书。 我已经成功导入了证书并在本地/ dev tomcat上进行了configuration。 它也显示证书信息,这意味着证书是好的。 但是,问题是当我将相同的导入密钥库configuration到AWS中的Tomcat时,Tomcat不响应请求。 有人能帮我一下吗 ? 谢谢

https://domian.com给出ERR_CONNECTION_TIMED_OUT

我们的域名已在GoDaddy注册并在AWS上托pipe。 在GoDaddy中,我们拥有www – > mylb_abc ….(AWS负载均衡器地址)的CNAME条目。 此外,该域名将被永久redirect(301)转发给GoDaddy中的http://www.domain.com 。 在浏览器中使用以下地址访问网站工作正常。 http://domain.com https://www.domain.com 但是,当我在浏览器中键入https://domain.com它给连接超时错误。 我在AWS上有Apache。 我通过互联网上的各种post阅读,描述了由于缺less通配符证书而导致的SSL证书错误,但找不到任何与此主题相关的post。 你可以提供任何你可能有的指针。 感谢任何帮助! 谢谢,Awsway

限制Tomcat部署pipe理器的HTTPS

作为PCI的要求,我想在HTTPS上获取tomcat部署pipe理器,因为密码是以纯文本formsstream动的。 我尝试了这样的资源。 我目前的连接器如下所示: <Connector protocol="org.apache.coyote.ajp.AjpProtocol" executor="tomcatThreadPool" port="8301" address="0.0.0.0" tomcatAuthentication="false" redirectPort="443" proxyPort="443" connectionTimeout="1000" keepAliveTimeout="300000" packetSize="21000" maxHttpHeaderSize="3600000" /> 我可以成功访问给定端口上的pipe理器。 我通过添加下面的内容来改变security-contraint来启用HTTPS 。 <security-constraint> <web-resource-collection> <web-resource-name>Protected Context</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <!– auth-constraint goes here if you requre authentication –> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> 请指出我是否缺less任何东西。 任何博客或某种文件也将有所帮助。

连接到ssl mysql总是失败,错误2026

我有mariadb版本 21年1月10日 – MariaDB的-1〜杰西 (在debian 8上)通过ssl运行主服务器复制场景,它的工作原理是: MariaDB [(none)]> show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: <MASTER_FQDN> Master_User: replication_user Master_Port: 3306 Connect_Retry: 10 Master_Log_File: sqlmaster-bin.000035 Read_Master_Log_Pos: 331 Relay_Log_File: mysqld-relay-bin.000002 Relay_Log_Pos: 623 Relay_Master_Log_File: sqlmaster-bin.000035 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 […]

使用SSL在MongoDB上进出的stream量仍然可以在明文中以wireshark显示

编辑:没有错。 我是一个白痴。 以下设置是正确的。 我在窗口上设置了一个mongodb(3.4)的实例,像这样configuration: net: port: 27017 ssl: mode: preferSSL PEMKeyFile: C:\…\mongodb.pem CAFile: C:\…\mongodb.ca allowConnectionsWithoutCertificates: true 证书是为特定域和通配符子域颁发的CA签名证书。 然后,我可以使用具有以下连接string的简单C#程序从本地机器连接到数据库: mongodb://user:password@hostname?ssl=true 它工作正常。 客户端没有使用证书。 我已经摆弄了参数,它真的好像使用SSL连接: 如果我切换到mode:requireSSL并在连接string中设置ssl=false ,我无法连接,这是预期的 如果我连接到未包含在证书中的域,则The remote certificate is invalid according to the validation procedure.得到The remote certificate is invalid according to the validation procedure. ,这也是预料之中的 我在mongo日志中看到的唯一错误/警告是no SSL certificate provided by peer – 这是预期的; 客户端没有使用证书,这就是为什么我configuration了allowConnectionsWithoutCertificates: true 但是 […]

在部分网站上启用带有SNI的TLS / SSL,而不会丢失非TLS网站上的SEO排名

我们在AWS上运行了几个LAMP服务器,其中有几十个网站,客户支付我们devise,构build和托pipe。 他们是Ubuntu 14.04服务器,包括Varnish,Apache和PHP。 目前,如果客户想为自己的网站使用SSL / TLS,我们会在服务器前放置一台Amazon ELB负载均衡器,以卸载TLS连接,这样Varnish仍然可以caching内容。 因此,每个服务器最终都由六个ELB(每个TLS客户或站点一个)提供,而非TLS站点则由服务器直接处理。 为了降低成本并简化设置,我们希望消除所有ELB,并直接在服务器上终止所有TLS连接。 通过使用Let's Encrypt和SNI在Varnish前面运行反向代理,可以轻松实现此目的。 像Hitch,Traefik或Nginx。 有些网站尚未准备好用于TLS。 他们需要工作来解决混合内容的警告,并防止SEO下降,并不是所有的客户都有预算。 我可以在服务器上打开端口443,并为所有“就绪”站点运行安装有TLS证书的反向代理。 不幸的是,客户仍然可以连接到“未准备好”的网站,虽然他们会得到证书错误(通用名称不匹配,自签名等)。 当然,我们不打算链接到“未准备好”网站的HTTPS版本,但是仍然可以inputhttps:// 。 我想要阻止所有网站的search引擎优化排名的损失,主要是在谷歌。 我被告诫Googlebot会发现HTTPS版本的“未就绪”网站,并将其编入索引,尽pipe存在证书错误,尽pipe它们没有被宣传为HTTPS。 这会给这些链接的访问者带来可怕的体验,以及严重的排名损失。 search引擎优化排名很难获得,但容易失去。 Googlebot(也可能是类似的机器人)如何处理HTTPS版本的“未就绪”网站? 他们会被索引,尽pipe被打破,而不是被广告? 当通过SNI部分启用HTTPS时,如何减轻不必要的副作用?