我正在尝试在 Fedora 18 上设置 ngircd IRC 服务器(使用 yum 安装),但遇到一些 SSL 问题。如果我选择“接受无效的 SSL 证书”,我可以本地和远程连接到服务器,但否则会出现错误。以下是我尝试本地连接到 IRC 服务器时的 XChat 输出:
* Connecting to {domain_name} ({ip_address}) port 6697...
* * Subject: /OU=Domain Control Validated/OU=PositiveSSL/CN={domain_name}
* * Issuer: /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=PositiveSSL CA 2
* * Subject: /OU=Domain Control Validated/OU=PositiveSSL/CN={domain_name}
* * Issuer: /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=PositiveSSL CA 2
* * Subject: /OU=Domain Control Validated/OU=PositiveSSL/CN={domain_name}
* * Issuer: /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=PositiveSSL CA 2
* * Certification info:
* Subject:
* OU=Domain Control Validated
* OU=PositiveSSL
* CN={domain_name}
* Issuer:
* C=GB
* ST=Greater Manchester
* L=Salford
* O=COMODO CA Limited
* CN=PositiveSSL CA 2
* Public key algorithm: rsaEncryption (2048 bits)
* Sign algorithm sha1WithRSAEncryption
* Valid since Nov 7 00:00:00 2012 GMT to Nov 7 23:59:59 2015 GMT
* * Cipher info:
* Version: TLSv1/SSLv3, cipher DHE-RSA-AES256-SHA (256 bits)
* Connection failed. Error: unable to verify the first certificate.? (21)
这是我的文件的 SSL 部分ngircd.conf
。我跑去ngircd --configtest
测试配置文件,但它只是将文件的内容打印到我的终端。
[SSL]
CertFile = /etc/pki/tls/certs/{domain_name}.crt
DHFile = /etc/pki/tls/private/dhparams.pem
KeyFile = /etc/pki/tls/private/{domain_name}.pem
KeyFilePassword = {key_file_password}
Ports = 6697
我还尝试使用 mIRC 从 Windows 7 x64 计算机远程连接到服务器,但也遇到了问题。
我无法确认,但我认为 Fedora 使用 GnuTLS 编译 ngircd,并且我认为我的密钥是使用 OpenSSL 创建的。如果是这样,密钥会采用不同的格式吗?我如何检查并转换它们?
这是否可能是我两台机器上的 CA 信任问题?如果是这样,我如何/在哪里可以在 Fedora 18 和 Windows 7 中添加 CA 根证书,这样我就不会遇到这个问题?
还有其他可能的原因吗?我还需要提供其他信息吗?
答案1
ngircd 支持该指令:
[SSL]
CipherList = @SYSTEM
您还想检查您正在使用的证书:
openssl x509 -text -noout -in cert.pem
对于 Let's Encrypt,我使用了 fullchain.pem 并使用 HexChat 通过 SSL 在端口 6697 上连接到 ngircd。
答案2
就我而言,certfile 中列出的证书顺序错误,因此 ngircd 无法正常启动,并且客户端给出连接错误,例如:
Irssi: warning SSL handshake failed: Connection refused
将证书编辑为最长的第一个(也称为最后的根 CA)后,服务器正确启动并且客户端将连接。