日期:2012-03-06 23:04:00 来源:本站整理
详解 Nginx + Tomcat HTTPS/SSL 配置办法[服务器安全]
本文“详解 Nginx + Tomcat HTTPS/SSL 配置办法[服务器安全]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
这篇文章触及到很多专业术语,比方密钥对,私钥,公钥,证书等等,关于加密的理论和概念请参考我之前写的 《SSL 与 数字证书 的基本概念和工作原理》,我在这篇文章中就不反复这些概念了.
1. 申请 SSL 证书
你可以从很多网站购置到SSL证书,我常常利用的是 GeoTrust .证书都是收费的(据说有免费的,没试过),价钱有贵的有便宜的.它们的辨别是发行证书的机构差别,贵的证书机构更声望,证书被浏览器反对的概率更小.正 规运营的网站倡议购置好一点的证书,免了麻烦,也贵不了多少.
1.1 生成 CSR 文件
申请证书的时刻,证书的发行机构会要求你供应一个CSR(Certificate Signing Request)文件,这个文件包含了发行机构需求的全部信息.在生成CSR之前,我们必须先成立密钥对:
$JAVA_HOME/bin/keytool -genkey -alias <your_alias_name> -keyalg RSA -keystore <your_keystore_filename> -keysize 2048
这里我们利用的是RSA非对称算法,2048位的密钥(好的证书机构强迫2048位).<your_alias_name>可以是 网站名,比方“linuxde”,同理<your_keystore_filename>可以是linuxde.keystore.
这个号令会让你输入私钥全部者的信息,也就是你的网站的信息,这里只有一个字段是关键的“Common Name(CN)”,这个字段应当是你的网站域名,比方“www.linuxde.net”,别的字段比方国家区域什么的你看着填就行了.利用 keytool工具的话,它提醒输入“first and last name”就是让你输入“Common Name”.在你填完信息今后,它会让你设置keystore和密钥的拜候密码,你输入就行了,倡议利用相同的密码.假如不输入的话,默许密码是 “changeit”.
下面来生成CSR文件:
$JAVA_HOME/bin/keytool -certreq -keyalg RSA -alias <your_alias_name> -file certreq.csr -keystore <your_keystore_filename>
这里 <your_alias_name> 和上面一步是一致的,我这里输入 linuxde ,<your_keystore_filename>输入 linuxde.keystore.这一步会问你要keystore密码,就是你上一步设置的密码.生成的“certreq.csr”是一个文本文件,你 翻开应当看到近似以下内容:
-----BEGIN NEW CERTIFICATE REQUEST-----
MIICvzCCAacCAQAwejELMAkGA1UEBhMCQ04xEjAQBgNVBAgTCUd1YW5nZG9uZzERMA8GA1UEBxMI
U2hlbnpoZW4xFDASBgNVBAoTC09TQ2hpbmEuTkVUMRQwEgYDVQQLEwtPU0NoaW5hLk5FVDEYMBYG
A1UEAxMPd3d3Lm9zY2hpbmEubmV0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnyZ3
8SXC6FmggtMtGBMCW/L88qd2DXjeryQExyUfy30VU4ROYcPnLNZXtwtE+poOf7AdqrQvrYBNJsls
xAmlKEKN7t1ATq3vYSaygx74Ixh4lsYQhJA03sZlcIe8N1EoSYwvch37ksQfhXC/zcZ9ltT9Pk67
dZTVoNPwI92bxH1VpCwnpNpygT1v8YSCQM6mIrBkWeNuWolhYQmKSRgOM9gV8hd06zBd6mNBGdxB
ktZ6KlZQp8i+A4hevcRuo9ebNLIhfERDghgos+zbaq1d2whgWegdv/mLnudLHjyyqcEBwk87rp7n
zFh2C220JmDMXAMGsz0QeA60wpRC6492UwIDAQABoAAwDQYJKoZIhvcNAQEFBQADggEBAGfLBzJt
+CFJ0v4LzttWHNMEpj5rvtoEBr2QYtB0op2y27mp0qwqCfCj0wv3Rw8xZzh6oPKx0NB2tnWqcqyN
XmVW4nl3SLd9bdY3I7/wdQkriCd6sBgn6Voh8mJOGKKtNZADQ3AfqUD1ge39bL+v7H0EdwtOfmCr
tAn35+qIIXH3SWS2R+G5sqa76GgjSRwkN8awzrbZJbA/hRPi5wwL+RV3/NFWfFmr4hpsuWHos7ly
5iFJpQqWVodpq9mxaaugzKvv0HG+A8ip0DG+vB8SnUgBMnAMM8UP1P2ozgNG0Twncq+uIAyz0Uw9
IzQHiWhtGpFAN9RO0xPl4EnYW6A+TM4=
-----END NEW CERTIFICATE REQUEST-----
你把CSR的内容供应应证书发行机构就行了.
1.2 提交认证恳求
在你提交证书签名恳求今后,证书发行机构会让你供应一个管理员邮箱来考证你的恳求.比方我是给 linuxde.net 恳求签名,它就要我供应 admin@linuxde.net 大概 webmaster@linuxde.net 来考证这个恳求的确是拥有 linuxde.net 域名的人发动的.收到证书发行机构的考证邮件后,你去确认,然后付款就会收到签名后的证书(及时的,不需求等候):
-----BEGIN CERTIFICATE-----
MIIFBDCCA+ygAwIBAgIDA7WjMA0GCSqGSIb3DQEBBQUAMGExCzAJBgNVBAYTAlVT
MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMR0wGwYDVQQLExREb21haW4gVmFsaWRh
dGVkIFNTTDEbMBkGA1UEAxMSR2VvVHJ1c3QgRFYgU1NMIENBMB4XDTEyMDIyNjA0
NTQyMVoXDTE0MDIyNzExMDQwMFowge0xKTAnBgNVBAUTIGxEMEdjSW1OSlhyQTZY
YXUtU055R1prTUtXdUdQVDFkMQswCQYDVQQGEwJDTjEYMBYGA1UEChMPd3d3Lm9z
Y2hpbmEubmV0MRMwEQYDVQQLEwpHVDg3NjQ4MDE5MTEwLwYDVQQLEyhTZWUgd3d3
Lmdlb3RydXN0LmNvbS9yZXNvdXJjZXMvY3BzIChjKTEyMTcwNQYDVQQLEy5Eb21h
aW4gQ29udHJvbCBWYWxpZGF0ZWQgLSBRdWlja1NTTChSKSBQcmVtaXVtMRgwFgYD
VQQDEw93d3cub3NjaGluYS5uZXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQCfJnfxJcLoWaCC0y0YEwJb8vzyp3YNeN6vJATHJR/LfRVThE5hw+cs1le3
C0T6mg5/sB2qtC+tgE0myWzECaUoQo3u3UBOre9hJrKDHvgjGHiWxhCEkDTexmVw
h7w3UShJjC9yHfuSxB+FcL/Nxn2W1P0+Trt1lNWg0/Aj3ZvEfVWkLCek2nKBPW/x
hIJAzqYisGRZ425aiWFhCYpJGA4z2BXyF3TrMF3qY0EZ3EGS1noqVlCnyL4DiF69
xG6j15s0siF8REOCGCiz7NtqrV3bCGBZ6B2/+Yue50sePLKpwQHCTzuunufMWHYL
bbQmYMxcAwazPRB4DrTClELrj3ZTAgMBAAGjggE2MIIBMjAfBgNVHSMEGDAWgBSM
9NmTCke8AKBKzkt1bqC2sLJ+/DAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYI
KwYBBQUHAwEGCCsGAQUFBwMCMCcGA1UdEQQgMB6CD3d3dy5vc2NoaW5hLm5ldIIL
b3NjaGluYS5uZXQwQQYDVR0fBDowODA2oDSgMoYwaHR0cDovL2d0c3NsZHYtY3Js
Lmdlb3RydXN0LmNvbS9jcmxzL2d0c3NsZHYuY3JsMB0GA1UdDgQWBBSMnwGchSF9
4rpwjGM0R5TdD/OU3zAMBgNVHRMBAf8EAjAAMEcGCCsGAQUFBwEBBDswOTA3Bggr
BgEFBQcwAoYraHR0cDovL2d0c3NsZHYtYWlhLmdlb3RydXN0LmNvbS9ndHNzbGR2
LmNydDANBgkqhkiG9w0BAQUFAAOCAQEAYtzSVIU/O43qyL4mBFv8DSwoLfi5kHIz
35sBVHM1Z3LW8tnIyscPewYZdy6pszBsm4AtJ0C+fdCM6Ai4GnMdIacao18OIcXS
n2ZiYVrZAs/GCzHRpCpu3VfFTogBiuTS+/Sm87KD8o1kHCxGxNDftfPorq4K5B+0
sIWhxU2gErog1vkGqzuO5CiupMIIp6swqGR0rUnh7XH+WkfjamnU9I8Yqz//QENT
cIaUI/2E2btqCvK4vgtsvhzYHLhmcGljiu0PEeCtIBa4CZSiiMk6E9P7tb/+l3o4
CS9dHYutNG1LqN3FNx34EYBYykGOz2N79L3BIUwIXa7v7QoO+T+c6w==
-----END CERTIFICATE-----
这就是你的网站,经过声望机构签名的证书.当用户通过HTTPS拜候你的网站的时刻,浏览器会考证这个证书.
1.3 下载证书
证书分很多种格局,比方X.509(.crt文件)、PKCS #7(.p7s文件)等等.差别的网站服务器大概要求差别格局的证书.很多时刻,给我们的证书签名的是二级证书机构,它上面还有根证书机构.所以你在购置 签名过的证书今后,它还会给你一个它自己的证书叫做“Intermediate CA(中间证书)”,格局和你自己的证书是一样的.在布置证书的时刻你需求同时布置你自己的证书还有中间证书,这就叫做Certificate Chain.好的证书发行机构会供应多种证书供你挑选下载,倡议下载同时下载X.509还有 PKCS #7两种格局.不要忘掉下载 X.509格局的中间证书.PKCS #7格局的不如果因为这个格局自带了各种中间证书.
2. 布置证书到Tomcat
Tomcat要求的是包含签名过证书的keystore文件和keystore密码.所以我们要先把证书导入keystore
2.1 导入证书到KeyStore
$JAVA_HOME/bin/keytool -import -alias linuxde -trustcacerts -file linuxde.p7s -keystore linuxde.keystore
上面的号令中 Alias “linuxde” 和之前申请证书的时刻输入的 alias 要一致.
2.2 改正Tomcat配置
<Connector SSLEnabled="true" acceptCount="100" clientAuth="false"
disableUploadTimeout="true" enableLookups="false" maxThreads="25"
port="8443" keystoreFile="/linuxde/webapp/linuxde.keystore" keystorePass="xxxxxxx"
protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
secure="true" sslProtocol="TLS" />
3. 布置证书到Nginx
Nginx和Tomcat不一样,它要求的是证书文件 .crt 和私钥 .key .遗憾的是,我们的私钥在keystore里面,而JDK自带的keytool并不供应私钥的导出功效,所以我们得借助第三方工具来导出私钥.
3.1 导出私钥(key)
有一个开源的私钥导出工具叫做 JAVA-exportpriv .它是一个简单的java程序,你下载今后参考它的阐明,编译,然后运行便可,非常简单,我就不多罗嗦了.
3.2 成立certificate chain
和Apache不一样,Nginx没有Certificat Chain这个参数,所以你要把你的证书和中间证书归并.归并证书很简单,成立一个先的文件 linuxde-chain.crt,内容以下:
-----BEGIN CERTIFICATE-----
这里是你证书的内容
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
这里是中间证书的内容
-----END CERTIFICATE-----
3.3 改正Nginx配置文件
server {
listen 443 ssl;
server_name localhost;
ssl on;
ssl_certificate /linuxde/webapp/linuxde-chain.crt;
ssl_certificate_key /linuxde/webapp/linuxde.key;
location / {
include proxy.conf;
proxy_pass https://61.145.122.155:443;
}
}
4. 考证证书能否安装精确
首先当然是自己用HTTPS的方法拜候自己的网站,看看浏览器能否报错大概报警,记得要把各种浏览器都试一遍.然后用 在线工具来测试你的网站HTTPS的配置能否精确,假如都测试通过,那么就打工搞成啦!
以上是“详解 Nginx + Tomcat HTTPS/SSL 配置办法[服务器安全]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论