前言:这篇文章涉及到很多专业术语,例如密钥对,私钥,公钥,证书等等,关于加密的理论和概念请参考我之前写的 《SSL 与数字证书》,我在这篇文章中就不重复这些概念了。
1. 申请 SSL 证书
你可以从很多网站购买到SSL证书,我经常使用的是 GeoTrust 。证书都是收费的(据说有免费的,没试过),价格有贵的有便宜的。它们的区别是发行证书的机构不同,贵的证书机构更权威,证书被浏览器否决的几率更小。正规运营的网站建议购买好一点的证书,免了麻烦,也贵不了多少。
1.1 生成 CSR 文件
申请证书的时候,证书的发行机构会要求你提供一个CSR(Certificate Signing Request)文件,这个文件包含了发行机构需要的所有信息。在生成CSR之前,我们必须先创建密钥对:
1 |
$JAVA_HOME/bin/keytool -genkey - alias <your_alias_name> -keyalg RSA -keystore <your_keystore_filename> -keysize 2048
|
这里我们使用的是RSA非对称算法,2048位的密钥(好的证书机构强制2048位)。<your_alias_name>可以是网站名,比如“oschina”,同理<your_keystore_filename>可以是oschina.keystore。
这个命令会让你输入私钥所有者的信息,也就是你的网站的信息,这里只有一个字段是关键的“Common Name(CN)”,这个字段应该是你的网站域名,例如“www.oschina.net”,别的字段例如国家地区什么的你看着填就行了。使用keytool工具的话,它提示输入“first and last name”就是让你输入“Common Name”。在你填完信息以后,它会让你设置keystore和密钥的访问密码,你输入就行了,建议使用相同的密码。如果不输入的话,默认密码是“changeit”。
下面来生成CSR文件:
1 |
$JAVA_HOME/bin/keytool -certreq -keyalg RSA - alias <your_alias_name> - file certreq.csr -keystore <your_keystore_filename>
|
这里 <your_alias_name> 和上面一步是一致的,我这里输入 oschina ,<your_keystore_filename>输入 oschina.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 提交认证请求
在你提交证书签名请求以后,证书发行机构会让你提供一个管理员邮箱来验证你的请求。例如我是给 oschina.net 请求签名,它就要我提供 admin@oschina.net 或者 webmaster@oschina.net 来验证这个请求的确是拥有 oschina.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
1 |
$JAVA_HOME/bin/keytool - import - alias oschina -trustcacerts - file oschina.p7s -keystore oschina.keystore
|
上面的命令中 alias “oschina” 和之前申请证书的时候输入的 alias 要一致。
2.2 修改Tomcat配置
1 |
< Connector SSLEnabled = "true" acceptCount = "100" clientAuth = "false"
|
2 |
disableUploadTimeout = "true" enableLookups = "false" maxThreads = "25"
|
3 |
port = "8443" keystoreFile = "/oschina/webapp/oschina.keystore" keystorePass = "xxxxxxx"
|
4 |
protocol = "org.apache.coyote.http11.Http11NioProtocol" scheme = "https"
|
5 |
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这个参数,所以你要把你的证书和中间证书合并。合并证书很简单,创建一个先的文件 oschina-chain.crt,内容如下:
-----BEGIN CERTIFICATE-----
这里是你证书的内容
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
这里是中间证书的内容
-----END CERTIFICATE-----
3.3 修改Nginx配置文件
01 |
server { |
02 |
listen 443 ssl;
|
03 |
server_name localhost;
|
04 |
ssl on;
|
05 |
ssl_certificate /oschina/webapp/oschina-chain.crt;
|
06 |
ssl_certificate_key /oschina/webapp/oschina.key;
|
07 |
08 |
location / {
|
09 |
include proxy.conf;
|
10 |
proxy_pass https://61.145.122.155:443;
|
11 |
}
|
12 |
13 |
}
|
4. 验证证书是否安装正确
首先当然是自己用HTTPS的方式访问自己的网站,看看浏览器是否报错或者报警,记得要把各种浏览器都试一遍。然后用 在线工具来测试你的网站HTTPS的配置是否正确,如果都测试通过,那么就大功搞成啦!
说明:此文流程是正确的,在实际操作过程中需要注意:
1) GeoTrust 很慢,需要电话语音验证,同时会发送你要注册的域名一封邮件,admin@域名,以此验证你是否对该域名具有管理权限。如果你确实有管理权限,他会去查找你的邮箱,供你选择管理员邮箱。
2)验证完后,会发送你注册时邮箱一封邮件,提示你进行进行下载,选择第一个:
‘Install the X.509 version of your certificate included at the end of this e-mail.
For installation instructions for your SSL Certificate, go to:
http://www.geotrust.com/support/installation-instructions/index.html’;
选择:
Tomcat
|
然后: https://products.geotrust.com/geocenter/reissuance/reissue.do
填入相关信息后,收邮件,打开连接,到新页面,选择左上角查看证书,然后下载crt格式,之后,还要下载颁发机构证书,最后用这个进行nginx证书的合并用,即中间证书。
3)关于 java-exportpriv ,下载器源码,包含三个参数,第一个是你生成的doudouy.keystore文件的绝对路径,另一个是你的域(doudouy),甚于一个是你一直输入的密码,三个参数以逗号隔开。
4)在用jdk命令时,加上./, 另外,在生成 doudouy.keystore时,中国的代码是CN
相关推荐
### Linux下Nginx+Tomcat整合的安装与配置详解 在现代的Web服务器架构中,Nginx作为高性能的反向代理服务器和负载均衡器,常被用来与Tomcat等应用服务器配合使用,以提高网站的响应速度、稳定性和安全性。本文将...
**Nginx + Tomcat 负载均衡配置详解** 在现代互联网应用中,服务器的高可用性和性能优化是至关重要的。Nginx 和 Tomcat 的组合常常被用来实现这样的目标,其中Nginx作为反向代理和负载均衡器,而Tomcat作为Java应用...
### DNS、Nginx与Tomcat实现HTTPS访问详解 #### 一、概述 在现代互联网应用中,HTTPS已经成为标配,不仅能够提供数据加密传输的安全保障,还能提升用户体验和搜索引擎优化等多方面的好处。本文将详细介绍如何通过...
### Nginx与Tomcat HTTPS至HTTP反向代理配置详解 #### 一、Windows环境下Nginx与Tomcat HTTPS至HTTP反向代理配置 ##### 1. 安装Nginx - **下载Nginx** - 普通版下载地址: [http://nginx.org/en/download.html]...
6. 配置Nginx,包括反向代理、负载均衡策略、SSL证书等。 7. 测试系统,确保所有组件都能正常工作,如通过curl命令访问VIP地址,查看Nginx状态,检查服务器端口等。 通过这种架构,可以实现高可用性和负载均衡,...
本文将深入探讨如何配置Nginx+Tomcat+Https的服务器负载均衡环境,这对于大型网站或高流量应用来说至关重要,可以提高系统的可用性和响应速度。我们将按照以下步骤进行讲解: 1. **JDK安装配置** - 首先,我们需要...
### Nginx与Tomcat实现负载均衡的知识点详解 #### Nginx简介及特性 Nginx是一款由Igor Sysoev开发的高性能HTTP服务器和反向代理服务器,以其出色的稳定性和低系统资源消耗而著称。最初是为俄罗斯访问量排名第二的...
### Nginx + Tomcat集群搭建详解 #### 环境配置 - **操作系统**: Centos 6 x86_64 - **Nginx 服务器 IP**: 192.168.2.100 - **Tomcat 服务器 IP**: - Tomcat1: 192.168.2.110 - Tomcat2: 192.168.2.111 - ...
### Linux 下 Nginx + Tomcat 的安装与配置详解 #### 一、环境准备与基础知识 在开始安装之前,我们先来了解一下相关的基础知识。 - **Linux 系统**:本教程适用于大多数 Linux 发行版,如 CentOS、Ubuntu、...
### Nginx 和 Tomcat 配置 SSL 与负载均衡详解 #### 一、Nginx 支持 SSL 的确认方法 Nginx 支持 SSL 加密是现代 Web 服务器的基本需求之一,确保数据传输的安全性。首先,我们需要确认当前安装的 Nginx 版本是否...
### Tomcat+Nginx配置详解 #### 一、Linux环境下Tomcat与JDK的安装配置 ##### 1. JDK 安装与环境变量配置 在Linux环境下安装JDK是搭建Tomcat服务器的基础步骤之一。 - **下载并解压JDK**: ```bash # tar xvf ...
【Linux下Nginx+Tomcat整合的安装与配置】 在服务器环境中,为了...此外,安全和性能优化也是部署过程中不可忽视的部分,包括但不限于SSL证书配置、防火墙规则设定、Nginx缓存策略以及Tomcat的连接池和线程池配置等。
### Nginx+Tomcat集群部署详解 #### 一、Nginx与Tomcat简介 在深入了解Nginx+Tomcat集群部署之前,我们先简要回顾一下这两款软件的基本功能。 - **Nginx**:是一款高性能的HTTP服务器及反向代理服务器,同时也是...
总结,Nginx+Tomcat的组合提供了高效、可扩展的Web服务架构,通过精心配置可以满足单个或多个域名的部署需求,同时通过Nginx实现负载均衡和安全性,为分布式系统提供稳定的基础。在实践中,不断学习和解决问题是成长...
Nginx配置详解 在IT领域,Nginx是一个广泛使用的高性能HTTP服务器和反向代理服务器,同时也支持IMAP/POP3/SMTP协议。由Igor Sysoev为Rambler.ru网站开发,Nginx以其高稳定性、丰富的功能、易于配置的文件以及对系统...
当使用SSL/TLS加密通信时(即使用HTTPS),则需要在Nginx中额外配置server块监听443端口,并配置SSL证书和密钥,以实现加密访问。 总之,通过Nginx的强大反向代理和负载均衡功能,可以将多个域名的HTTP请求高效地...