详解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位)。可以是网站名,比如“oschina”,同理可以是oschina.keystore。

  这个命令会让你输入私钥所有者的信息,也就是你的网站的信息,这里只有一个字段是关键的“Common Name(CN)”,这个字段应该是你的网站域名,例如“”,别的字段例如国家地区什么的你看着填就行了。使用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>

  这里 和上面一步是一致的,我这里输入 oschina ,输入 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 下载证书

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/10891.html