标签: https

使用前检查 Apache/Nginx 上的 HTTPS 设置

您刚刚获得了一个新的 HTTPS (SSL/TLS) 证书,您希望得到正确的中间证书。

这是在 Apache 中设置的:

SSLCertificateKeyFile /etc/ssl/www.example.com.key
SSLCertificateChainFile /etc/ssl/www.example.com.chn
SSLCertificateFile /etc/ssl/www.example.com.crt
Run Code Online (Sandbox Code Playgroud)

或者在 Nginx 中使用:

ssl_certificate_key /etc/apache2/ssl/www.example.com.key;
ssl_certificate /etc/apache2/ssl/www.example.com.pem;
Run Code Online (Sandbox Code Playgroud)

记住apachectl configtest只检查这些文件是否存在;并且nginx -t“如果网站证书不是 crt 文件中的第一个,并且密钥错误,则会失败”(感谢Drifter104)。

那么,如何在重新启动之前检查所有内容?


可能的问题

  1. 您有错误的中间体(例如,GeoTrust 在一页上列出了它们的所有中间体)。

  2. 您不小心将中间证书文件与您的网站证书文件混合在一起。

  3. 您包含了根证书(影响性能,因为这会发送不必要的数据)。

  4. 您缺少一个或多个中级证书。

  5. 证书用于错误的密钥。

  6. 您已将这些文件保留为服务器上的任何人都可以读取(例如chmod 644)。

  7. 您使用了错误的证书(域不在CNSAN 中


一些起点

提取有关密钥、CSR 或证书文件的信息:

openssl rsa -check -in "www.example.com.key";
openssl req -text -noout -verify -in "www.example.com.csr";
openssl x509 -text -noout -in "www.example.com.crt";
Run Code Online (Sandbox Code Playgroud)

使用 sha256 获取公钥哈希(例如用于设置 HPKP):

openssl rsa …
Run Code Online (Sandbox Code Playgroud)

ssl nginx https tls apache-2.2

5
推荐指数
1
解决办法
1437
查看次数

Chrome 中的 SSL 初始连接非常缓慢

我们的客户有一个基于 PrestaShop 的网上商店 ( https://www.hoerschiff.at ),现在他的托管商安装了 SSL 证书。我们更新了 PrestaShop 的配置,因此所有页面都强制通过 SSL 传送。我们现在面临的问题是,在 Chrome(也在 Safari 中)通过 HTTPS 加载页面的时间非常缓慢,而在 Firefox 中则可以正常加载。

开发人员工具表明,许多资产(JS、CSS、PNG 等)的“初始连接”时间非常长(从 5 秒到 1.5 分钟)。这仅在加载完整页面时发生。如果我直接加载一项资产(例如https://www.hoerschiff.at/themes/PRS030068/js/megnor/custom.js),它加载得很好。

我还发现了这个问题:Chrome 在 https 站点上运行缓慢,尤其是内部站点 但无法与之相关,因为当资产已经缓存时,站点正常加载。

首先,我认为这可能是 Apache/SSL 配置问题,但由于它在 Firefox 中正常加载,不应该是这种情况。

您有什么想法会导致初始连接时间变慢吗?

提前致谢!

ssl https google-chrome

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

让我们加密 certbot - 向证书添加一个新域

我已经安装了 certbot,它为我托管的几个域创建了一个证书,并且正在运行 - 我得到了一个涵盖所有域的证书。现在我想向证书添加一个新域。我看到域根列在其中/etc/letsencrypt/renewal/domain.com.conf,我将相关条目添加到域中(在该[[webroot_map]]部分下)。然后我跑了

certbot-auto renew --force-renew

其中更新了证书(在浏览器中验证了证书颁发日期),但证书中未列出新添加的域。

我需要在哪里添加域才能将其添加到证书中?

https lets-encrypt

5
推荐指数
1
解决办法
8603
查看次数

如何在 IIS 7.5 上的 https 绑定中编辑主机名?

在 Windows Server 2008 R2 上,用于编辑 https 绑定的“主机名”框被禁用。我无法启用它,以便我可以输入要绑定的主机名。

“颁发给”字段的证书采用 *.example.com 格式。

在此处输入图片说明

如何启用主机名框进行编辑?

编辑:建议的副本没有回答我的实际问题,即“为什么此框变灰且未启用?” 此外,该问题已过时,不考虑此处使用的方法:https : //blogs.msdn.microsoft.com/varunm/2013/06/18/bind-multiple-sites-on-same-ip-address-和-port-in-ssl/

iis https iis-7.5 ssl-certificate

5
推荐指数
1
解决办法
9084
查看次数

在没有证书的情况下设置 Nginx https(在端口 443 上)?

我试图尽可能多地跟进此线程,但我总是收到此消息:

This site can’t be reached

example.com unexpectedly closed the connection.
Try:
Checking the connection
Checking the proxy and the firewall
ERR_CONNECTION_CLOSED
ReloadHIDE DETAILS
Run Code Online (Sandbox Code Playgroud)

在铬。

我所拥有的配置部分是这样的:

server {   

   listen  80;
   listen 443 default_server ssl;
   #ssl on;

    server_name example.com   www.example.com;
Run Code Online (Sandbox Code Playgroud)

这是我在本地 127.0.0.1 计算机上的测试网站 example.com。

certificate nginx https ssl-certificate

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

haproxy 将自定义 http 流量重定向到自定义 https 端口

我希望根据我接收流量的端口将我的自定义 http 端口流量重定向到自定义 https 端口

我有多个绑定语句:

 bind 1.2.3.4:7777
 bind 1.2.3.4:8888
 bind 1.2.3.4:9999 ssl crt /etc/haporxy/somecert.crt
Run Code Online (Sandbox Code Playgroud)

我试过的:

acl is7777 dst_port 7777
http-request redirect code 301 https://%[req.hdr(Host)]:9999%[capture.req.uri] if is7777
Run Code Online (Sandbox Code Playgroud)

但是,当我查看 Chrome 开发工具中的日志时,我总是看到 req.hdr(Host) 的值保留了旧端口的值,因此我被重定向到

 https://1.2.3.4:7777/:9999/.
Run Code Online (Sandbox Code Playgroud)

如何仅获取域名并将其重定向到所需的目标端口 9999

此外,像这样的事情:

http-request replace-value Host (.*):7777 \1:9999
Run Code Online (Sandbox Code Playgroud)

由于稍后有多个重定向,因此中断了应用程序流程。我需要从 7777(http) 转到 9999(https) 。haproxy 版本:1.5

ssl https redirection haproxy

5
推荐指数
1
解决办法
6048
查看次数

为什么 firewall-cmd 会抛出错误“ALREADY_ENABLED”,但调用 firewall-cmd --list-ports 时未列出端口?

使用 CentOS 7,我尝试使用firewall-cmd --zone=public --add-port=443/tcp --permanent将 443 添加到我允许的端口。不幸的是,这会引发错误ALREADY_ENABLED: 443:tcp。但是当我使用firewall-cmd --list-ports它时并没有显示在列表中(“80/tcp 3000/tcp 26900/tcp 26900/udp”)。

我想这个问题是由 firewall-cmd 和 iptables 之间的冲突引起的。但我不知道如何调试它,以及这是否可能。

调用firewall-cmd --list-all结果如下表:

public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: ssh dhcpv6-client
  ports: 80/tcp 3000/tcp 26900/tcp 26900/udp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
Run Code Online (Sandbox Code Playgroud)

ssl https iptables port firewall-cmd

5
推荐指数
1
解决办法
5576
查看次数

让我们为内部站点加密证书

我希望消除我对使用 Let's Encrypt 用于内部站点/应用程序的一些困惑。我无法在其他地方找到这些信息。

我想将 Let's Encrypt 与 Certbot 配对使用,以允许在应用程序上使用 SSL。

问题:

  1. Let's Encrypt 或 Certbot 是否需要访问互联网才能执行其工作的任何部分?即使互联网访问中断,应用程序也需要能够正常运行。据我所知,唯一需要互联网连接的部分是在 90 天期限即将结束时生成新证书。
  2. Let's Encrypt 需要一个有效的域。根据他们的网站,“对于任何使用域名的服务器,如网络服务器、邮件服务器……”。我对拥有有效域名意味着什么一无所知。如果我的服务器上已经安装了其他 Web 应用程序的 Apache,我设置的任何域名都可以使用 Apache 计数还是需要购买域名?
  3. 在上一个问题中,我提到其他应用程序将在此服务器上。这些不需要 SSL。如果我在我的服务器上设置了 Let's Encrypt 和 Certbot,这是否意味着这些应用程序具有可用的 SSL,还是特定于用于设置它的域(站点)名称?如果单独的应用程序使用 SSL,是否需要修改这些其他应用程序中的任何一个?
  4. 假设我想获得一个根证书,但我想创建和使用一组中间密钥,而不是将它与 Certbot 一起使用。这可能吗?每次我们创建新的根密钥时,这些中间密钥是否需要改变?

如果我的任何问题是无知的,我深表歉意,我对这类东西的了解非常有限。也就是说,甚至可能有更好的选择来完成我需要的事情,所以我愿意接受建议。我选择了让我们加密而不是自签名证书,因为使用此解决方案,我不需要向需要访问的每台客户端计算机添加 CA。

ssl https ssl-certificate lets-encrypt

5
推荐指数
1
解决办法
3516
查看次数

强化文件服务 Windows Server 2019 实例

我正在为我工​​作的小公司重新配置和保护服务器。我们使用它与 Autodesk Vault 一起存储设计文件和其他数据。它在附近服务器提供商的 VPS 上运行。

我这样做的原因是我们的服务器提供商已经通知我们,他们收到关于我们的服务器在互联网上行为不当的投诉,表明它在某种程度上受到了损害。除此之外,我们没有发现任何问题。服务器最初是在我来公司之前设置的,我找不到有关其配置的任何文档。它还运行 Windows Server 2012,所以我决定重新开始使用运行 Windows Server 2019 的新 VPS。这是我第一次使用 Windows 作为服务器操作系统,但我有一些管理 Ubuntu 服务器的经验。

查看旧服务器上的事件查看器,有无数次“4625 审核失败”登录尝试到服务器,但也有不少成功登录不是来自我或我们的组织。4624 审计成功示例:

An account was successfully logged on.

Subject:
    Security ID:        NULL SID
    Account Name:       -
    Account Domain:     -
    Logon ID:       0x0

Logon Type:         3

Impersonation Level:        Impersonation

New Logon:
    Security ID:        ANONYMOUS LOGON
    Account Name:       ANONYMOUS LOGON
    Account Domain:     NT AUTHORITY
    Logon ID:       0x9ABEAB7
    Logon GUID:     {00000000-0000-0000-0000-000000000000}

Process Information:
    Process ID:     0x0
    Process Name:       -

Network Information:
    Workstation Name: …
Run Code Online (Sandbox Code Playgroud)

rdp https ntlm windows-firewall windows-server-2019

5
推荐指数
2
解决办法
514
查看次数

在非标准 HTTP 端口下为运行其自己的 Web 服务器的应用程序添加 HTTPS 支持

我有一台运行 Debian 10 的服务器。它运行 Apache 2.4 以提供可在 下访问的 Web 服务https://example.com,这要归功于 LetsEncrypt 证书。

但它也运行一个应用程序 (Subsonic),它在端口 4040 上提供 Web UI,在它自己的 Web 服务器下,因为我没有它的 vhost,并且当 Apache 停止时它仍然可以访问。因此,目前该应用程序可通过 HTTP 访问http://example.com:4040

我知道如何为 Apache 虚拟主机添加 SSL 支持,但如何为该应用程序添加 HTTPS 支持,以便可以在https://example.com:4040或上访问它https://example.com:1234

另外,我是否应该使用与该域已有的 SSL 证书不同的 SSL 证书?

ssl http https apache-2.4

5
推荐指数
1
解决办法
707
查看次数