shlei6067
作者shlei60672012-10-20 23:04
数据库管理员, NJ

在AIX 和 Windows 之间设置 FTP 需要执行四个步骤

字数 11366阅读 13893评论 1赞 0
转自于:http://www.ibm.com/developerworks/cn/aix/library/au-aix_secure_filetransfer/
 

简介

Transport Layer Security (TLS) 是一种密码协议,可以在客户机和服务器之间提供安全的通信。当服务器和客户机进行通信时,TLS 确保第三方无法窃取或篡改任何消息。TLS 的前身是 Secure Sockets Layer (SSL)。这使系统上的任何用户都可以安全地交换文件,只要通信的对方也提供这个扩展即可。

您可能会觉得奇怪,既然 openSSH 已经提供了文件传输协议 (FTP) 的安全版本 (sftp),为什么要用一种新方法保护 FTP?尽管只使用安全 FTP 而不使用安全 telnet 可能不是最合适的方法,但是在无法使用 OpenSSH 的环境中,这种方法实际上是一种明智的替代方案。例如,如果您最信任的系统在一个专用的隔离的网络上运行,那么使用 telnet 在这个网络区中进行远程访问(或从控制台工作)是非常合适的。但是,即使在这样的环境中,也很可能需要在这个安全区中传出数据或传入数据,这就可以用安全 FTP 来完成。

另一个场景是已经在使用 OpenSSH,但是仍然必须与不支持 OpenSSH(因此也不支持 scp 和 sftp)的外部系统交换数据。这种遗留系统常常提供 “FTP via SSL” (常常称为 ftps)。

安全 FTP 的需求

TLS 依赖于 Secure Socket Layer,因此需要在 AIX 系统上安装 OpenSSL(ftps 依赖于 libssl.a 和 libcrypto.a 库)。可以从 https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?source=aixbp 获得 IBM 支持的 OpenSSL 的最新版本。

FTP 客户机和服务器之间的安全通信使用证书,其中包含一个公共-私有密钥对。因此,设置 FTP over SSL 的第二个需求是,在内部创建证书或者从商业证书机构导入证书。

在 AIX 和 Windows 之间设置 FTP

在 AIX 和 Windows 之间设置 FTP 需要执行四个步骤:

下面分别讨论这些步骤。

创建证书

如果还没有商业证书的话,就需要创建在 FTP 服务器和客户机之间进行通信所需的证书。

首先,如果要在 Windows 机器上创建证书,就需要在这台机器上安装 OpenSSL。否则,只需把商业证书导入这台机器。

创建一个根(root)级私有密钥和根级证书请求(包含公共密钥)。


清单 1. 根级证书请求
c:>cd c:opensslbin openssl req -newkey rsa:2048 -sha1 -keyout root_key.pem -out root_req.pem Generating a 2048 bit RSA private key ...................................+++ ....+++ writing new private key to 'root_key.pem' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:TX Locality Name (eg, city) []:Austin Organization Name (eg, company) [Internet Widgits Pty Ltd]:IBM Organizational Unit Name (eg, section) []:AIX Common Name (eg, YOUR name) []:windows Email Address []:windows@austin.ibm.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:1234 An optional company name []:ibm

为根生成自签名的证书(有效期大约 10 年):


清单 2. 创建根证书
openssl x509 -req -days 3650 -in root_req.pem -signkey root_key.pem -out root_cert.pem Signature ok subject=/C=US/ST=TX/L=Austin/O=IBM/OU=AIX/CN=windows/emailAddress=windows@austin.ibm.com Getting Private key Enter pass phrase for root_key.pem:

可以用以下命令检查根证书,确保一切正常:


清单 3. 根证书
openssl x509 -in root_cert.pem -text -noout Certificate: Data: Version: 1 (0x0) Serial Number: a3:fe:9c:32:97:5e:2b:6e Signature Algorithm: sha1WithRSAEncryption Issuer: C=US, ST=TX, L=Austin, O=IBM, OU=AIX, CN=windows/emailAddress=windows@austin.ibm.com Validity Not Before: Nov 12 19:54:40 2008 GMT Not After : Nov 10 19:54:40 2018 GMT Subject: C=US, ST=TX, L=Austin, O=IBM, OU=AIX, CN=windows/emailAddress=windows@austin.ibm.com Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (2048 bit) Modulus (2048 bit): 00:da:6f:db:90:e2:ab:31:92:21:1e:a0:11:13:a9: 6e:00:1a:a5:69:cf:29:8f:60:7c:a0:08:ea:c9:0f: b2:81:c2:84:6b:a0:4f:9e:12:bf:99:2d:30:60:c4: e4:c5:f8:2b:db:cd:9b:fc:5e:fe:fb:d8:a0:1c:26: 83:fd:ad:c5:6f:cf:32:70:f8:77:45:cd:f7:7d:a6: 65:5b:5d:82:d3:06:74:b8:0e:4e:d9:e4:63:6f:0a: d1:11:ea:b0:d0:cf:ae:68:2f:e3:5e:17:fc:a6:49: c8:db:73:6c:e5:61:1b:8d:22:0d:46:54:9c:79:16: b1:1b:2b:ef:c1:7b:3c:91:79:56:69:e8:fe:8e:33: 46:6a:cc:17:cb:33:6f:38:6d:5d:f9:5a:57:2f:39: fb:ca:f6:d2:a0:3b:29:08:c0:ed:d0:bc:31:21:0d: 15:72:9b:c2:ac:fc:1d:f8:a0:d6:9c:16:19:43:11: 2a:fb:86:d8:c5:e8:66:11:2d:c9:96:9f:23:1f:ae: 92:5a:6b:97:98:48:a5:a6:61:67:2b:8d:6b:90:c2: df:ac:78:57:c5:25:85:bc:ab:30:2e:65:f3:4e:bb: 7d:a0:33:82:d8:f8:0c:7c:b2:a8:80:e6:9c:85:ec: 77:3c:67:26:10:3a:9d:4b:9f:57:73:44:c2:d3:af: d6:93 Exponent: 65537 (0x10001) Signature Algorithm: sha1WithRSAEncryption 6b:01:12:d5:91:3f:79:8d:c2:50:e0:ff:bf:52:fd:f0:93:44: dc:c4:ef:5c:f6:4c:71:76:bf:b8:18:32:2b:f3:dd:85:bf:ad: 14:6c:2b:df:a6:06:37:38:c8:5c:3f:bf:a4:39:09:7c:ae:a5: 04:dc:a4:73:4a:b7:db:10:47:c7:c9:c5:65:21:28:01:64:5d: 9e:65:70:05:0a:59:6f:4a:80:53:b0:60:4e:03:6a:ff:c3:69: a6:91:fb:1d:95:38:c4:e3:85:21:0a:3b:17:7f:7d:3e:4a:40: 45:ea:61:ba:fa:a3:2f:13:20:88:e1:43:5e:0b:96:3a:77:df: ca:06:40:f5:09:cc:dd:10:dc:c7:bb:c6:cf:40:8f:e6:5b:e9: 2d:2f:01:6c:49:11:18:ff:89:82:a7:06:15:c9:af:84:19:0f: 04:b7:e8:d9:a6:f2:88:33:6e:cd:ed:bd:ec:72:f2:52:89:33: 07:93:ab:2f:93:50:07:1e:6a:1a:10:b4:61:08:09:11:03:47: 29:4d:d9:86:82:79:d5:c6:0e:f2:3e:4d:e6:7c:0a:15:bd:74: 2a:57:13:b4:aa:69:93:37:74:b0:f6:2b:77:08:cb:ee:77:d3: 33:35:dc:5d:c2:67:97:ec:9c:e7:88:14:e3:06:74:3e:84:42: 36:fe:3b:b8

现在,要为 Windows FTP 服务器创建一个 RSA 密钥,但是不使用 PEM 密码;因此,要使用另一个命令。在这种服务器密钥上不使用任何密码是很重要的。否则,在每次使用密钥时,都会要求输入密码(在使用 ftpd 时这是不可能实现的)。


清单 4. Windows FTP 服务器的密钥
openssl genrsa 2048 Loading 'screen' into random state - done Generating RSA private key, 2048 bit long modulus ................................................................................ .......+++ ............+++ e is 65537 (0x10001) -----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEAveC0u4iRBje4YsosQ9/rS7g2ucrlPR7tDQ/NZCdSuFg3RX3c j1ZxSmDDHbwkt1u6FSkzBvWhNkZ9SGxRZdChnsdOhXER9L0gAeBgIApuZvcLc9iN KVJb7GpvvqWYgJnLtTBVRN6aaKKIKSRG1NIUihzrET/+9XK+u6rGZN5aqhrllrWg uG4e02PAo4ZB5/iStOPFmAvQSifMTsKMX518U1tgBXCtckw7X+tj+1Bdksx3B+1R OGRwUgM02UkuIOY70j6mxiNDgANzrS8NrM6RhuylbULa0BaOf01Il+716qgjSy7p AQFLle6S6JdFJrAo0DA43bEKSDcXhdR7iSak6QIDAQABAoIBAQCNQMby4+uPRpBi 3agEbmXqlIYRvUDAMWuD1gejxCUjgmzLw4/7CgGJpWZBjp950EEkUNvnB4AAknvN DteW+JfjOL3PQ4hqGu/etX6NF3V+H7ZjXevVm7FKtPugRiynLsJ+bhBhBYC06oSE proSxJ4HCPBOit8u1UfS8H5at5eXBtbHBhsjfL5CUuGzVx2e9z1TqoujYdprtLyL mmCXUrkI4GuWisZpLRj7gTRAQ3NBYL1U01oKOP3/53mg0RnzPSUNaJ104hrk7j4G emKVlgTnk9iTrBChjMpqRSEsuZ3J37LgrdpUHxtUiFG/UamfNwLTBlsiWbPKnLDz CW6Wr1uhAoGBAOl43WQQxIfF2BZmX7AnenEPHcAtq4Wa0mQbNNX+9kWRGxwQe+zs kCCbNKcfamhxMZijcQlX2CS5YSs9QxT5aa2cy/QVprSrnwlmfTTaxVfWL5FTsp84 4eyHlSTj7F79Nq7lhJjX1TRmje2/Oh6h0L+URtXKE/WJXJgP04Iv0/flAoGBANAy /Y8jLyGLM/Rj5czgRt60d1CGKpOZvG1rP++PlsF/txGbTRZdEyRPsT8iqQopbcKb eAM1cDkbx+4dTnNyM036Ow4xgJTMuFRIJEynhaA920UlNNhqIqS5WiGSc/lHVHdN 2qWtI7vtWuuWgCswDBBpEsNMzS2XRSJthDSL4OC1AoGAP+R6udq43esvwpmLkDqN kIkxfBlDelGvSAQGBpY6sTkPsTN1ppXqr3GqDB5V0XVAvGPmGEd4+DvfMqUWSZQj 7oYdbpPKRmE9KaZpl2BTZ0FPTTcZh+daNI+6KhlR44DqSRy4l9dhGnECYFDXx/BC n1sls3YU1jocI+UY3eTW3l0CgYAwIcmqwLiRqaveMQYcYjEgJVp8HDhVnTIJncTP LkPtAgihomSk6emV+HKCpRGtTryYQ/bvzvfdzAVhkBbl653exh3G/zy5qcZnfbIe oo/q5sH9b0eTTJ4rtMoYftIe7BWj6zTEHo3nUU02r7l7woTXemMjEWtRwenytpzc xQW9DQKBgQCy04VN+RfizwuGP0fe84xY7fzuWOH6jkNIt2kx91TFlJ0K8iEtndju kIjqHbDlADjQ5voUrAGAs80/wDpphrgt4iUjWDZw+MJuxTtxfiiEPMemZ50ee8on fu6Faz8OBaUz5sJK87oj0YoYlsKF4gzfO+bh74RWxulapE4FPbK5SA== -----END RSA PRIVATE KEY-----

把上面的密钥内容复制到文件 server_key.pem 中。

接下来,为刚才创建的密钥创建一个证书请求(包含它的公共密钥):


清单 5. 创建的密钥的证书请求
openssl req -new -key server_key.pem -out server_req.pem You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:TX Locality Name (eg, city) []:Austin Organization Name (eg, company) [Internet Widgits Pty Ltd]:IBM Organizational Unit Name (eg, section) []:AIX Common Name (eg, YOUR name) []:server Email Address []:server@austin.ibm.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:1234 An optional company name []:ibm

接下来,用根 CA 的私有密钥和自签名的公共密钥对服务器密钥请求进行签名。这会创建服务器证书(同样,有效期大约为 10 年):


清单 6. 创建服务器证书
openssl x509 -req -days 3650 -in server_req.pem -CA root_cert.pem -CAkey root_key.pem -CAcreateserial –out server_cert.pem Signature ok subject=/C=US/ST=TX/L=Austin/O=IBM/OU=AIX/CN=server/emailAddress=server@austin.ibm.com Getting CA Private Key Enter pass phrase for root_key.pem:

为了更容易配置服务器和分发密钥文件,可以把服务器密钥、服务器证书和根证书放在一个文件中(OpenSSL 支持这种做法)。因此,把这三个文件组合成一个文件。应该用相应的文件权限保护这个文件。


清单 7. 单一服务器文件
Copy the contents of server_key.pem server_cert.pem root_cert.pem into the file server.pem

以 .pfx 格式导出服务器证书。


清单 8. 把服务器证书转换为 pfx 格式
openssl pkcs12 -export -out server.pfx -in server.pem -name "server cert pfx" Enter Export Password: Verifying - Enter Export Password:

现在,已经有了 Windows 能够接受的 .pfx 格式的服务器证书。一定要把这个证书添加到 Microsoft® Management Console 的可信证书存储库中。如果不这么做,这个证书就是不可信的。

可以通过 Start -> Run 并输入 mmc 访问 Microsoft Management Console (MMC)。

MMC 有一个 snap-in 形式的添加证书的选项。


图 1. Microsoft Management Console
Microsoft Management Console

图 2. 添加 snap-in
添加 snap-in

把 Snap-in "certificate" 添加到控制台中之后,会看到下面的证书类别。选择可信的根证书或任何其他证书类别,把刚才创建的服务器证书导入到其中。


图 3. 导入证书
导入证书

导入证书操作会打开 Certificate Import 向导,通过这个向导导入证书。


图 4. Certificate Import 向导
Certificate Import 向导

现在已经把用于 FTP 的 OpenSSL 证书转换为 Windows 机器上的可信证书了。


图 5. 在 snap-in 中添加的证书
在 snap-in 中添加的证书

现在,打开 Internet Information Services (IIS) 管理程序,把这个可信证书添加到 ISS 服务器证书数据库中,这样 IIS 的各种服务(包括安全 FTP)就可以使用它了。


图 6. 服务器证书存储库
服务器证书存储库

图 7. 导入到服务器证书存储库中
导入到服务器证书存储库中

通过把服务器证书导入到存储库中,安全 FTP 服务就可以使用它了。另外,这个证书是可信的。成功地添加证书之后,必须在 IIS 管理程序中 ‘应用’ 修改,从而让这些修改生效。


图 8. 导入的证书
导入的证书

在 Windows 服务器上设置 FTP 服务

为了在 Windows 端设置 FTP,必须打开 Internet Information Services (IIS) 的控制台。可以通过 Start -> Administrative Tools -> Internet Information Services (IIS) Manager 访问 IIS。


图 9. Internet Information Services (IIS) 管理程序
Internet Information Services (IIS) 管理程序

创建一个用于此用途的新站点,工作区域将创建与 FTP 相关的服务。在这里,创建一个名为 ssl_ftp_site 的站点。


图 10. 添加 FTP 站点
添加 FTP 站点

可以指定这个 FTP 服务器需要关联的 IP 地址和端口。在这一步中,有一个选项要求您指定证书。如果已经创建和准备好了证书,现在就可以指定它;否则,可以以后再配置。


图 11. 绑定和 SSL 设置
绑定和 SSL 设置

这一步配置 FTP 服务器身份验证模式、允许的用户以及他们的读/写权限,从而完成 IIS 中 FTP 站点的配置。


图 12. 身份验证和授权信息
身份验证和授权信息

右边面板中的 “Manage FTP Site” 部分可以用来停止或运行服务。要想让任何修改生效,必须停止并重新启动服务器。


图 13. 站点准备就绪
站点准备就绪

现在,必须设置这个站点的 FTP SSL 设置,可以在 FTP 站点的工作空间中使用这些设置。


图 14. FTP SSL 设置
FTP SSL 设置

同样,不要忘记停止并重新启动服务器,从而让修改生效。

在 AIX 客户机上配置 FTP

使用这种自签名的证书还需要完成另一个安全步骤:需要把根 CA 的证书复制到每个客户机上,而且对于任何希望使用加密的经过身份验证的 FTP 会话的用户,需要在他们的 ~/.ftpcnf 文件中引用这个证书。

在用户的 .ftpcnf 文件中修改以下行,从而指向 CA 证书:

CA_PATH ./root_cert.pem

使用安全 FTP 传输数据

无论目标主机是否启用了 TLS,都可以使用 /usr/bin/ftp 连接任何远程系统上的 FTP 守护进程。在服务器上完成 TLS 设置之后,可以使用以下命令在服务器上传出或传入文件。

# ftp -s –M remote_host

这会建立一个加密的会话,而不需要在客户端做任何修改。但是,如果证书是自签名的,客户机就不得不盲目地信任服务器,所以 FTP 命令会显示在 TLS 握手期间接收的证书的最重要数据,由用户决定是否要连接。

ftp –s remote_host 命令只适用于 AIX 机器之间的连接。要想在 AIX 和非 AIX 机器之间使用安全 FTP,必须使用 ftp –s –M remote_host 命令。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论1 条评论

wjxiaoitwjxiaoit系统工程师, SGC
2012-10-26 09:18
先学习一下,希望以后能用上!
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广