我正在使用 VSFTPD 在 CentOS 上通过 SSL 设置 FTP 访问,但遇到了一些问题。
我正在使用一个带有多个虚拟服务器的 Apache,每个域一个。
按照我在互联网上找到的一些指南,我设法设置了这个配置文件,并将其与命令 openssl 一起使用来生成证书和密钥:
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no
default_bits = 2048
[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = ES
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = My Province
localityName = Locality Name (eg, city)
localityName_default = My City
0.organizationName = Organization Name (eg, company)
0.organizationName_default = My Company Ltd
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = WebServices
commonName = Common Name (eg, YOUR name)
commonName_default = My Company Ltd
commonName_max = 64
[v3_req]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = myserver.com
DNS.2 = ftp.myserver.com
DNS.3 = mail.myserver.com
DNS.4 = julian.net
DNS.5 = ftp.julian.net
DNS.6 = mail.julian.net
DNS.7 = smith.org
DNS.8 = ftp.smith.org
DNS.9 = mail.smith.org
IP.1 = 111.112.113.114
我使用以下命令生成证书和密钥:
openssl req -x509 -new -nodes -out certfile.crt -config certificate.conf -keyout keyfile.key -days 365 -newkey rsa:2048
重置 vstfpd 服务后,我使用 FileZila 连接到服务器,它显示以下消息:
“ftp.myserver.com:21 - 主机名与证书不匹配”
如果我将通用名称设置为“myserver.com”,问题就消失了,但是服务器上托管的其他域又会出现同样的问题。
我怀疑我使用了错误的方法,我应该为每个域创建一个不同的证书,但是,说实话,我不知道如何设置 vsftpd.conf 以指向不同的证书,具体取决于域名。
或者,我是否必须将所有域的所有证书存储在一个文件中?
正如您所看到的,我对此还很陌生,因此我非常感谢任何帮助。
答案1
$ openssl req -x509 -new -nodes -out certfile.crt -config certificate.conf \
-keyout keyfile.key -days 365 -newkey rsa:2048
此命令未使用请求中的扩展。扩展仅针对指定req
,即用于创建证书要求但证书不是。这意味着主体备用名称永远不会出现在证书中,因此客户端有理由抱怨不匹配。
要解决此问题,请使用命令行选项指定在证书中也应使用该扩展-extension
:
$ openssl req -x509 -new -nodes -out certfile.crt -config certificate.conf \
-keyout keyfile.key -days 365 -newkey rsa:2048 \
-extensions 'v3_req'
然后openssl x509 -text
可以检查一下:
$ openssl x509 -in certfile.crt -text
...
X509v3 Subject Alternative Name:
DNS:myserver.com, DNS:ftp.myserver.com, DNS:mail.myserver.com, DNS:julian.net, DNS:ftp.julian.net, DNS:mail.julian.net, DNS:smith.org, DNS:ftp.smith.org, DNS:mail.smith.org, IP Address:111.112.113.114