设为首页 收藏本站
查看: 448|回复: 0

[经验分享] Tomcat 7 配置 SSL.

[复制链接]

尚未签到

发表于 2017-1-24 09:15:33 | 显示全部楼层 |阅读模式
 Tomcat 配置 SSL

 

说明:

配置的是Tomcat 7 的JSSE  Connector,对于配置APR请继续Google.

 

配置流程:

一.Tomcat 服务端SSL认证配置.

1.配置一个CA证书(如果直接使用授权认证机构本步骤可以跳过)

   1.)生成CA私有密钥  (红色标记为CA 私有密钥的验证密码下面很多地方会用到)


openssl genrsa -des3 -out private/ca.key 1024
       Generating RSA private key, 1024bit long modulus

       ...............................++++++
......++++++
e is 65537 (0x10001)

       Enter pass phrase for private/ca.key:123456 

       Verifying - Enter pass phrase for private/ca.key:123456

 

    2.)生成CA证书 (ca.key 的密码为上一步骤输入的密码)

生成的ca.crt 就是 CA的认证证书,可以导入到浏览器的受信任机构中区.而那些由这个CA证书签名的

        的客户端证书就可以被浏览器认证通过.


 openssl req -new -x509 -key private/ca.key -out public/ca.crt -days 3650
        Enter pass phrase for private/ca.key:123456

        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]:CN

          State or Province Name (full name) [Some-State]:ZJ

         Locality Name (eg, city) []:HZ

         Organization Name (eg, company) [Internet Widgits Pty Ltd]:orgnation

         Organizational Unit Name (eg, section) []:orgnation

         Common Name (e.g. server FQDN or YOUR name) []:orgnation

         Email Address []:xxx@mail.com

 

2.  使用CA证书签名服务端证书

   1.)生成服务端私钥

 


openssl genrsa -des3 -out private/server.key
 
1024
Generating RSA private key, 1024 bit long modulus

......................................................++++++
.....++++++
e is 65537 (0x10001)

Enter pass phrase for private/server.key:s123456

Verifying - Enter pass phrase for private/server.key:s123456

 

   2.)创建服务端证书签名请求

Common Name 配置很重要,可以配置tomcat 所在服务器的IP地址或域名.

如果是本地测试的话可以配置localhost.


openssl req -new -key private/server.key -out server.csr
 

Enter pass phrase for private/server.key:

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]:CN

State or Province Name (full name) [Some-State]:ZJ

Locality Name (eg, city) []:HZ

Organization Name (eg, company) [Internet Widgits Pty Ltd]:XXX

Organizational Unit Name (eg, section) []:Development

Common Name (e.g. server FQDN or YOUR name) []:xxx.xxx.xxx.xxx (这里很重要重要)

Email Address []:xxxx@mail.com

 

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:csr123456

An optional company name []:xxx

  3.) 使用 CA证书和CA私钥给服务端证书请求签名

       生成的server.crt 为服务端证书.


openssl x509 -req -days 360 -in server.csr -CA public/ca.crt -CAkey private/ca.key -CAcreateserial -out public/server.crt

 

Signature ok

subject=/C=CN/ST=ZJ/L=HZ/O=
XXX/OU=Development/CN=
xxx.xxx.xxx.xxx /emailAddress=xxxx@mail.com

Getting CA Private Key

Enter pass phrase for 123456

        private/ca.key:123456

 

  4.)把服务端代码转换浏览器可以识别的PCS12 格式

    服务端证书密码暂时无用.

 


$ openssl pkcs12 -export -in public/server.crt -inkey private/server.key -out server.p12
     Enter pass phrase for private/server.key:s123456

     Enter Export Password: e123456

     Verifying - Enter Export Password:e123456

 

 5.)生成信任库中

   使用jetty 中的PKCS12Import 工具类完成转换.(jetty-5.1.10.jar 可在附件中下载)

 

 


java -cp jetty-5.1.10.jar org.mortbay.util.PKCS12Import server.p12  server.jks
    
    Enter input keystore passphrase: e123456

    Enter output keystore passphrase: e123456

    Alias 0: 1

    Adding key for alias 1

 

  6.)使用下面命令查看jks文件中包含的证书信息.

 


keytool -v -list -keystore server.jks
   7.)配置Tomcat SSL Connector.
  在server.xml文件中配置下面内容

<Connector port="8443" protocol="HTTP/1.1"  SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false"
keystoreFile="F:/temps/ca3/server.jks"
keystorePass="e123456"
sslProtocol="TLS" />
   8.)导入CA 证书(ca.crt)到客户端浏览器的受信任认证机构的证书列表中
  9.)使用客户端浏览器访问: https://xxx.xxx.xxx.xxx:8443 .访问成功的话表示服务端SSL配置成功.
  二 配置客户端证书实现客户端和服务端双向认证
  1. 创建private key 和证书签名请求

$ openssl req -new -newkey rsa:1024 -nodes -out client/client.req -keyout
  Generating a 1024 bit RSA private key
  .................++++++
  ................................................++++++
  writing new private key to 'client/client.key'
  -----
  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]:CN
  State or Province Name (full name) [Some-State]:ZJ
  Locality Name (eg, city) []:HZ
  Organization Name (eg, company) [Internet Widgits Pty Ltd]:XXXX
  Organizational Unit Name (eg, section) []:XXXX
  Common Name (e.g. server FQDN or YOUR name) []:XXXXX
  Email Address []:xxxx@mail.com
  Please enter the following 'extra' attributes
  to be sent with your certificate request
  A challenge password []:c123456
  An optional company name []:XXX
  2.使用CA证书签名客户端证书签名请求.

$ openssl x509 -CA public/ca.crt -CAkey private/ca.key -CAserial public/ca.srl -req -in client/client.req  -out client/client.pem -days 365
   Signature ok
  subject=/C=CN/ST=ZJ/L=HZ/O=XXXX/OU=XXXX/CN=XXX.XXX.XXX.XXX/emailAddress=xxxx@mail.com
  Getting CA Private Key
  Enter pass phrase for private/ca.key:123456
  3.把客户端证书client.pem 转换成 浏览器可以识别的PKCS12 格式

openssl pkcs12 -export -clcerts -in client/client.pem -inkey client/client.key  -out client/client.p12 -name 10.90.3.122
   Enter Export Password:c123456 
  Verifying - Enter Export Password:c123456
  4.服务端配置支持客户端证书认证.
  1).创建和填充trust-store
  依次执行下面命令.

keytool -genkey -alias dummy -keyalg RSA -keystore truststore.jks
keytool -delete -alias dummy -keystore truststore.jks
keytool -import -v -trustcacerts -alias my_ca -file public/ca.crt -keystore truststore.jks
   2.).使tomcat 加载信任库.
  配置下面环境变量

CATALINA_OPTS="-Djavax.net.ssl.trustStore=your_path_to/truststore.jks -Djavax.net.ssl.trustStorePassword=your_password"
  3.)配置tomcat server.xml 文件启用客户端认证.

<Connector port="8443" protocol="HTTP/1.1"  SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="true"
keystoreFile="F:/temps/ca3/server.jks"
keystorePass="e123456"
sslProtocol="TLS" />
   4.)导入客户端证书.
  导入client.p12 到客户端浏览器测试.
DSC0000.jpg

DSC0001.jpg

 

 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-332708-1-1.html 上篇帖子: struts2例子启动tomcat报错 下篇帖子: javaEE Tomcat server.xml详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表