我正在为 nginx 的 SSL 配置中的ssl_dhparam指令生成 Diffie-Hellman 参数。
该文件dhparam.pem是使用命令创建的openssl dhparam 2048 -check -out dhparam.pem。
我应该为这个文件设置哪些权限?在 git 存储库中共享是否安全还是应该将其保密?
这个问题是关于ssl_prefer_server_ciphers在配置 nginx 时设置正确的值。
根据 Mozilla 建议的一个相当典型的配置,该值应该是off(来源:https : //ssl-config.mozilla.org/#server=nginx&server-version=1.17.7&config=intermediate&openssl-version=1.0.1g)。
根据 nginx 自己的文档,应该始终将其设置为on:https : //www.nginx.com/blog/nginx-https-101-ssl-basics-getting-started/(在文档中搜索ssl_prefer_server_ciphers)。
我不知道该遵循哪些建议。这两个来源都非常可靠。
一些行业专家能否就何时应该转off,以及何时转on?也很想知道原理。
我们制造运行网络服务器的设备,用户可以通过直接浏览设备的 IP 来控制设备的某些功能。当使用直接 WiFi 或以太网连接时,这可以是固定 IP,但在大多数情况下,这是设备从网络中的 DHCP 服务器接收的 IP。
访问浏览器的一些更高级的功能需要越来越多的 HTTPS。例如访问缓存(https://developer.mozilla.org/en-US/docs/Web/API/Cache),允许使用网络摄像头(https://blog.mozilla.org/webrtc/camera -microphone-require-https-in-firefox-68/ ), Service Workers ( https://www.digicert.com/dc/blog/https-only-features-in-browsers/ ), ...列表保留每天都在成长。
我都赞成拥有安全系统,但我认为存在一个主要问题。HTTPS (TLS) 设置证书的方式仅在域名与证书中的域名匹配并且证书颁发机构被客户端浏览器接受时才被标记为有效,即所谓的信任链。这在使用固定主机名的网络上非常有效。
然而,当用户不使用互联网而是使用他们的本地网络时,主机名是事先不知道的。有时用户可以使用本地 DNS、mDNS,但情况并非总是如此。很多时候用户只使用内部 IPv4 地址。这是问题开始的地方,因为使用我们制造的设备有两种选择:
选项 2 是我们不强制设备通过 HTTPS 访问的原因,因为它只是向许多用户发出警报并淹没客户服务。五年前,这并不是真正的问题,因为没有 HTTPS 一切都可以完成。随着越来越多的 API 现在只能在“安全上下文”中工作,这对我们来说真的是一个问题。
因此,我认为设计一个完全在内部网络中使用 HTTPS 而不使用主机名系统的系统的需求变得非常大。我可以想象私有 IPv4 范围可以从警告或更聪明的东西中排除。这让我想到我的问题,您是否面临同样的问题,如何解决?
正如第一条评论中所指出的,现在提出的解决方案是使用通配符证书并为公共域上的设备配置 DNS 条目。然而,这存在客户端仍然需要活动互联网连接的问题。在此类设置中,情况当然并非总是如此。
我还发现了这篇关于 Let's encrypt 的文章,它在没有给出解决方案的情况下讨论了同一主题:https : //letsencrypt.org/docs/certificates-for-localhost/
阅读以下答案和评论后,我正在考虑针对该问题的可能的安全解决方案。下面的设置(如果允许的话)是否安全?
我知道显式“协商”FTPS 是首选,因为它仍然使用标准端口 21 和该方法,但关于“隐式”非协商 FTPS 使用标准端口 990 与端口 22(我见过一些人描述),为什么非协商端口号的“标准”存在这种差异?
注意:我还注意到,如果我将 FileZilla 服务器配置为使用除默认端口 990 以外的任何其他端口,则它无法正常工作(从 FileZilla 客户端连接时)。
我可以从根 CA 获得证书,然后我可以用它来签署我自己的 Web 服务器证书吗?如果可能,我会使用签名证书作为中间人来签署其他证书。
我知道我必须使用“我的”中间证书以某种方式配置我的系统,以便向我的客户提供有关信任链的信息。
这可能吗?根 CA 愿意签署这样的证书吗?这个很贵吗?
背景
我熟悉 SSL 的基础知识,因为它与通过 HTTP 保护网络流量有关。我也对信任链的工作方式有基本的了解,因为如果您使用具有有效链的证书进行加密,则“默认情况下”网络流量是安全的,该链一直回到根 CA,由浏览器确定/OS 供应商。
我也知道许多根 CA 已经开始使用中间证书为最终用户(如我)签署证书。这可能需要更多的设置,否则,这些证书将正常工作。我想这与保护他们对 CA 的所有有价值的私钥以及如果我受到威胁将会造成的灾难有关。
例子
现在,我们绝对没有这些组织的规模,但他们似乎正在做这样的事情。这肯定会使这些证书的管理变得更加可口,尤其是考虑到我们正在扩大电子商务平台范围的一种方式。
我得到了两个要导入的 .pem 文件。我没有生成这些文件。我可以将它们导入 IIS 7 还是必须将它们转换为另一种格式?我知道 IIS 喜欢 .pfx - 如有必要,可以转换 .pem 吗?
任何帮助是极大的赞赏!
我的Fedora 8安装有问题。看起来wget不再知道如何验证 SSL 证书了。这很奇怪,因为我有另一个Fedora 8 机器,我相信它具有相同的配置并且可以正常工作!
如何在不使用--no-check-certificateswitch 的情况下使其工作?
这是一个示例输出:
wget https://www.google.com
--2011-09-23 00:11:13-- https://www.google.com/
Resolving www.google.com... 74.125.230.146, 74.125.230.147, 74.125.230.148, ...
Connecting to www.google.com|74.125.230.146|:443... connected.
ERROR: cannot verify www.google.com's certificate, issued by `/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA':
Unable to locally verify the issuer's authority.
To connect to www.google.com insecurely, use `--no-check-certificate'.
Unable to establish SSL connection.
Run Code Online (Sandbox Code Playgroud)
编辑
我有这个文件/etc/pki/tls/certs/ca-bundle.crt文件,当我wget用--ca-certificate指向这个文件的开关运行时,一切正常。这个文件应该放在哪里,这样我就不需要使用开关了?
BTW:curl和links做工精细,但lynx也抱怨:“SSL错误:无法获取本地颁发者证书” …
我希望我的网络服务器通过 SSL 连接与 MySQL 数据库服务器通话。Web 服务器运行 CentOS5,数据库服务器运行 FreeBSD。证书由中间 CA DigiCert 提供。
MySQL 应该使用 ssl,根据my.cnf:
# The MySQL server
[mysqld]
port = 3306
socket = /tmp/mysql.sock
ssl
ssl-capath = /opt/mysql/pki/CA
ssl-cert = /opt/mysql/pki/server-cert.pem
ssl-key = /opt/mysql/pki/server-key.pem
Run Code Online (Sandbox Code Playgroud)
当我启动 MySQL 时,守护进程启动时没有错误。这表明证书文件都是可读的。
但是当我尝试从网络服务器连接到数据库服务器时,出现错误:
[root@webserver ~]# mysql -h mysql.example.org -u user -p
ERROR 2026 (HY000): SSL connection error
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用 openssl 进一步调试:
[root@webserver ~]# openssl s_client -connect mysql.example.org:3306 0>/dev/null
CONNECTED(00000003)
15706:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:588:
Run Code Online (Sandbox Code Playgroud)
这是测试与 MySQL 数据库服务器的 SSL 连接的有效方法吗?该SSL23_GET_SERVER_HELLO:unknown protocol消息很奇怪,因为这通常是您在用于非 SSL 流量的端口上使用 SSL …
我正在实施一个多租户应用程序,我的应用程序在其中托管和提供租户产品的技术文档。
现在,我正在考虑的方法是-我是主持人的文件docs.<tenant>.mycompany.com,并要求我的房客设置一个CNAME DNS记录指向docs.tenantcompany.com到docs.<tenant>.mycompany.com。
我希望该站点使用我的租户的证书启用 SSL。我想了解我的租户公司是否有通配符 SSL 证书,它是否适用于此设置,还是必须购买新的 SSL 证书docs.tenantcompany.com?
domain-name-system ssl cname-record ssl-certificate dns-zone
运行以下命令时 openssl s_client -host example.xyz -port 9093
我收到以下错误:
139810559764296:error:14094412:SSL routines:SSL3_READ_BYTES:sslv3 alert bad certificate:s3_pkt.c:1259:SSL alert number 42
39810559764296:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:184:
Run Code Online (Sandbox Code Playgroud)
但最后我收到"Verify return code: 0 (ok)"消息。
我的问题是上述警报表示什么,以及 SSL 是否真的成功。
SSL handshake has read 6648 bytes and written 354 bytes
New, TLSv1/SSLv3, Cipher is AES128-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1.2
Cipher : AES128-SHA
Session-ID: xx
Session-ID-ctx:
Master-Key: xx
Key-Arg : None
Krb5 Principal: None
PSK identity: None …Run Code Online (Sandbox Code Playgroud)