tomcat增加https访问配置方案.docx
- 文档编号:29759088
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:20
- 大小:530.08KB
tomcat增加https访问配置方案.docx
《tomcat增加https访问配置方案.docx》由会员分享,可在线阅读,更多相关《tomcat增加https访问配置方案.docx(20页珍藏版)》请在冰豆网上搜索。
tomcat增加https访问配置方案
客户没有证书,证书自己生成:
第一步:
为服务器生成证书
使用keytool为Tomcat生成证书,假定目标机器的域名是“localhost”,keystore文件存放在“E:
\key\tomcat.keystore”,口令为“smartdot123456”,使用如下命令生成:
keytool -genkey -v -alias tomcat -keyalg RSA -keysize 2048 -validity 3650 -keystore E:
\key\tomcat.keystore-dname "CN=172.20.55.127,OU=cn,O=smartdot,L=cn,ST=cn,c=cn" -storepass smartdot123456 -keypass smartdot123456
第二步:
生成csr文件用于提交CA认证生成证书使用
keytool -certReq -alias tomcat -keystore e:
\key\tomcat.keystore -storepasssmartdot123456-file e:
\key\tomcat.csr
第三步:
这个tomcat.cer是为了解决不信任时要导入的
keytool -export -alias tomcat -keystore e:
\key\tomcat.keystore -file e:
\key\tomcat.cer -storepass smartdot123456
第四步:
配置Tomcat服务器
打开Tomcat根目录下的/conf/server.xml,找到如下配置段,修改如下:
tomcat7
maxThreads="150"scheme="https"secure="true" ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA" keystoreFile="e: /key/smartdot.store"keystorePass="smartdot123456" clientAuth="false"sslProtocol="TLS"/> tomcat6 ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA" keystoreFile="e: /key/smartdot.store"keystorePass="smartdot123456" clientAuth="false"sslProtocol="TLS"/> 第五步: web.xml修改 应用程序的web.xml可以加上这句话: 具体web系统 --AuthorizationsettingforSSL--> --AuthorizationsettingforSSL--> 第六步: application.properties端口访问配置 organization.service.url=https\: //\: 8443/organization-webapp permission.service.url=https\: //\: 8443/organization-webapp policy.service.url=https\: //\: 8443/ProcessAdmin 到这里启动tomcat,输入https: //localhost: 8443/ 这时再打开会弹出一个提示框: 证书不可信任,有一个警告,说什么需要机构颁发。 这时再双击第一步生成的tomcat.cer。 一直下一步,最后选“是”。 导入后,再输入地址就不是提示了。 直接转向tomcat的猫页,说明成功了。 这时候如果用程序去访问可能还会抛证书不信任的异常(sun.security.validator.ValidatorException: PKIXpathbuildingfailed...),需要将生成的证书(tomcat.cer) keytool -import -alias tomcatsso -file "E: \key\tomcat.cer" -keystore "C: \ProgramFiles\Java\jdk1.7.0_03\jre\lib\security\cacerts" -storepass changeit 其中changeit是jre默认的密码。 信任这个认证? [否]: y 认证已添加至keystore中 如拒绝访问 使用管理员命令执行 如果抛Nosubjectalternativenamespresent请在生成keystore注意CN必须要为域名(或机器名称)例如localhost不能为IP 如果抛Nonamematchinglocalhostfound表示你生成keystoreCN的名称和你访问的名称不一致 客户有证书并根据证书生成tomcat证书 因我们没有证书,因此使用模拟OpenSSL生成ca和server证书 OpenSSL生成客户端和服务证书 网上官方网站下载的OPENSSL需要手动去改它的盘符和路径 OPENSSL下载地址 修改openssl.cfg 内容中的文件路径 [CA_default] dir=E: \\ProgramFiles(x86)\\OpenSSL-Win32\\bin\\PEM\\demoCA new_certs_dir=E: \\key\\ca\\newcerts#defaultplacefornewcerts. 新建文件夹newcerts E: \ProgramFiles(x86)\OpenSSL-Win32 设置环境变量 把c: \openssl\bin\f设成OPENSSL_CONF这样的一个变量,同时把c: \openssl\bin目录加到你的path里去(根据你们自己的解压后的openssl的实际路径) OPENSSL_CONF E: \ProgramFiles(x86)\OpenSSL-Win32\bin\openssl.cfg PATH增加 ;E: \ProgramFiles(x86)\OpenSSL-Win32\bin; 第一步: 生成根证书所用的密钥 opensslgenrsa-des3-outE: \key\ca\ca.key1024 提示输入密码我们使用: smartdot123456 再次输入确认密码 (密钥,由其是privatekey是由口令保护的) 第二步: 去除CA密钥的口令 opensslrsa-inE: \key\ca\ca.key-outE: \key\ca\ca.key 输入上述命令后,再次输入密码smartdot123456 即可 为什么我们要把好好的口令保护给去除呢? 这边不是去除而是代表这个证书在被应用程序启动时不需要显示的提示用户输入口令 第三步: 生成CA即ROOTCA证书并自签 opensslreq-new-x509-keyE: \\key\\ca\\ca.key-outE: \\key\\ca\\ca.crt 由于我们产生的证书为: X509格式,因此需要按照X509格式填入相关的值。 AU-国家家的缩写,如: CHINA=CN,美国=USA,英国=UK,日本=JP StateorProvinceName-省/洲的缩写或者是全称,如: 上海=SH LocalityName-城市的全称或者是缩写,如: 上海=SH OrganizationName-公司名,如: Cognizant CommonName-要安装这台证书的主机名,证书是和主机名绑定的,如果证书里的主机名和你实际的主机名不符,这张证书就是非法的证书。 我们不能够填IP,一定一定要填主机名即域名这样的东西,比如说我填的是,但我的主机怎么知道是指: 172.20.95.69或者说是指localhost这台机器呢? 打开C: \Windows\System32\drivers\etc\hosts这个文件,如下: localhost 172.20.95.69 Look,我们的CA证书生成了,可以双击这张证书,查看信息后关闭它。 目前这张ROOT证书,只是个自签的产品,因为是自签,一般其它客户端的IE里因此是不会带有这张根证书的。 要其实客户端也能信任这张根证书,我们必须怎么办? 双击证书查看 将它安装到我们的IE的信任域里。 将ROOTCA导入客户端的根级信任域,有多少台客户端,每个客户端都要导一边这个证书 点[导入]按钮 下一步,下一步,此时会有一个弹出框,选“yes(是)”完成导入。 再来打开我们的ca.crt文件 发现了没有,这张证书是有效的证书了,所以在“证书信息”前原有的一个红叉叉,消失了。 第四步: 生成Web服务器端证书密钥 我们的root证书有了,现在可以生成Web服务器端的证书了,并且用rootca去签名 Opensslgenrsa-des3-outE: \key\ca\server.key1024 先生成密钥,密码smardot123456 执行除去密码命令 opensslrsa-inE: \key\ca\server.key-outE: \key\ca\server.key 去除密码(提示: enterpassphraseforserver.key时输入刚才生成密钥时的密码即smardot123456 第五步: 生成Web服务器端证书的签名请求 opensslreq-new-keyE: \key\ca\server.key-outE: \key\ca\server.csr 生成服务器端证书请求时需要输入server端key的口令,我们为了方便,也用6个a。 第六步: 用RootCA去对Web服务器的证书请求即csr(certificaterequest)进行签名认证 opensslca-ine: \key\ca\server.csr-oute: \key\ca\server.crt-certe: \key\ca\ca.crt-keyfilee: \key\ca\ca.key 使用ca和server证书生成tomcat证书 第一步: 为服务器生成证书 为Tomcat的server所在的服务器生成一个server.jks文件 很多网上的资料是拿原先的server.crt文件转成keystore文件,其实是不对的,需要单独生成一张server.jks文件。 怎么生成证书? 回顾一下上文: 1) 生成KEY 2) 生成证书请求 3) 用CA签名 使用keytool为Tomcat生成证书,假定目标机器的域名是“localhost”,keystore文件存放在“E: \key\ca\tomcat.keystore”,口令为“smartdot123456”,使用如下命令生成: keytool -genkey -v -alias tomcat -keyalg RSA -keysize 1024 -validity 3650 -keystore E: \key\ca\tomcat.jks-dname "CN=,OU=cn,O=smartdot,L=BJ,ST=cn,c=cn" -storepass smartdot123456 第二步: 生成JSK的CSR keytool-certreq-aliastomcat-sigalg"MD5withRSA"-fileE: \key\ca\tomcat.csr-keypasssmartdot123456-keystoreE: \key\ca\tomcat.jks-storepasssmartdot123456 此处注意: Alias名必须和上面一致 密码和上面一致 第三步: 使用openssl结合ca.crt与ca.key为jsk的csr来签名认证并产生jks格式的crt opensslx509-req-inE: \key\ca\tomcat.csr-outE: \key\ca\tomcat.crt-CAE: \key\ca\ca.crt -CAkeyE: \key\ca\ca.key-days3650-CAcreateserial-sha1-trustout-CAE: \key\ca\ca.crt-CAkeyE: \key\ca\ca.key-days 3650-CAserialca.srl-sha1–trustout 于是,我们有了一张符合jks格式的crt证书叫tomcat.crt文件,来查看它。 第四步: 生成符合x509格式的jks文件 将RootCA导入jks信任域: 前面我说了,jks信任域是读不到IE的根级信任域的,因此要手动把ca.crt文件导入jks的信任域 keytool-import-aliasrootca-trustcacerts-filee: \key\ca\ca.crt-keystoretomcat.jks-storepasssmartdot123456 第五步: 增加客户端客户端信任tomcat.jks 现在我们的tomcat.jks文件中有两个realm(域),一个是: 2本身的csr(产生的签书请求认证的域,还没被认证,因为认证的内容变成了toncat.crt文件了是不是? ) 刚才步骤中导入的RootCA认证域 那么客户端信任RootCA没有问题,但由于server端本身的信任域还只是处于“请求被签名”的状态,那么客户端如何去信任这个jks文件呢? 答案就是: 补链,补这根信任链! keytool-import-alias tomcatX509-filee: \key\ca\tomcat.crt-keystoree: key\ca\tomcat.jks-storepasssmartdot123456 我们不是生成过tomcat’.crt吗? 把它导入jks不就是能够把原有的“正在处于请求被签名认证”这个状态改成“已经被RootCA签名认证”了吗? 对吧? 所以,我们用于布署tomcat的ssl证书的jks格式的文件tomcat.jks已经完整了 第六步: 修改tomcat配置文件以及项目web.xml参考自己证书 参考客户没有证书,证书自己生成 第四、五、六步骤。 第四步: 配置Tomcat服务器 参考资料
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- tomcat 增加 https 访问 配置 方案