【Tomcat】-- 小程序开发 tomcat 申请阿里云HTTPS配置

小程序现在火啊,公司也需要搞搞!从阿里云申请了一个免费的证书,可必须需要支持https,现在配置笔记如下:

从阿里下载的证书内容包括:pfx,pem和key三个文件。


Tomcat的SSL配置分为两种情况:使用APR、不使用APR,这两种情况下的SSL配置各不相同。 
我们可以在Tomcat的how-to文档中查到这两种情况下的配置方法,链接:http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html 

对于不使用APR的情况,Tomcat的文档里说得比较清楚。配置参数也比较固定,通用配置如下: 

Java代码   收藏代码
  1.           
  2.       
  3. <-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->  
  4.            port="8443" maxThreads="200"  
  5.            scheme="https" secure="true" SSLEnabled="true"  
  6.            keystoreFile="${user.home}/.keystore" keystorePass="changeit"  
  7.            clientAuth="false" sslProtocol="TLS"/>  



如果是tomcat7以上是直接支持pfx的,我用的是tomcat8,在安装跟目录下创建cert目录,并上传证书文件.

Java代码   收藏代码
  1.           
  2.       
  3. <-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->  
  4.            port="8443" maxThreads="200"  
  5.            scheme="https" secure="true" SSLEnabled="true"  
  6.            keystoreFile="${catalina.base}/cert/xxxxx.pfx" keystorePass="changeit"  
  7.            clientAuth="false" sslProtocol="TLS"/>  



而对于使用APR的情况,则较复杂一点。 
怎么为Tomcat安装apr,参考我的历史博客列表中有详细介绍。

使用APR后,SSL的配置如下(一): 
Java代码   收藏代码
  1. <-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->  
  2.            port="8443" maxThreads="200"  
  3.            scheme="https" secure="true" SSLEnabled="true"  
  4.            SSLCertificateFile="/usr/local/ssl/server.crt"   
  5.            SSLCertificateKeyFile="/usr/local/ssl/server.pem"  
  6.            SSLPassword="123456"  
  7.            clientAuth="optional" SSLProtocol="TLSv1"/>  

其中:SSLCertificateFile,指明证书的路径; 
SSLCertificateKeyFile,指明私钥的路径;私钥也可以包含在证书文件里,如果私钥包含在证书文件里的话,则SSLCertificateKeyFile参数不需要配; 
SSLPassword,指明私钥的加密密钥;如果SSLCertificateKeyFile中的私钥进行了加密,则需要配置SSLPassword; 
Tomcat要求SSLCertificateFile、SSLCertificateKeyFile所指向的文件的内容格式都为PEM格式 

配置(二):


下载的文件中没有crt文件,需要转换一下,从pfx文件中将它们提取出来:

openssl pkcs12 -in my.pfx -nodes -out server.pem
openssl rsa -in server.pem -out server.key 
openssl x509 -in server.pem -out server.crt


Cer Crt Pem Pfx 证书格式转换


1.从pfx格式的证书提取出密钥和证书
set OPENSSL_CONF=openssl.cnf
openssl pkcs12 -in my.pfx -nodes -out server.pem
openssl rsa -in server.pem -out server.key 
openssl x509 -in server.pem -out server.crt
PEM格式的证书与DER格式的证书的转换
openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER 
openssl x509 -in ca.cer -inform DER -out ca.pem -outform  PEM
几种典型的密码交换信息文件格式:
DER-encoded certificate: .cer, .crt
PEM-encoded message: .pem
PKCS#12 Personal Information Exchange: .pfx, .p12
PKCS#10 Certification Request: .p10
PKCS#7 cert request response: .p7r
PKCS#7 binary message: .p7b
.cer/.crt是用于存放证书,它是2进制形式存放的,不含私钥。
.pem跟crt/cer的区别是它以Ascii来表示。
pfx/p12用于存放个人证书/私钥,他通常包含保护密码,2进制方式
p10是证书请求
p7r是CA对证书请求的回复,只用于导入
p7b以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥

算法
base64不是加密算法,但也是SSL经常使用的一种算法,它是编码方式,用来把asc码和二进制码转来转去的。

openssl x509部分命令
打印出证书的内容: 
openssl x509 -in cert.pem -noout -text 
打印出证书的系列号 
openssl x509 -in cert.pem -noout -serial 
打印出证书的拥有者名字 
openssl x509 -in cert.pem -noout -subject 
以RFC2253规定的格式打印出证书的拥有者名字 
openssl x509 -in cert.pem -noout -subject -nameopt RFC2253 
在支持UTF8的终端一行过打印出证书的拥有者名字 
openssl x509 -in cert.pem -noout -subject -nameopt oneline -nameopt -escmsb 
打印出证书的MD5特征参数 
openssl x509 -in cert.pem -noout -fingerprint 
打印出证书的SHA特征参数 
openssl x509 -sha1 -in cert.pem -noout -fingerprint 
把PEM格式的证书转化成DER格式 
openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER 
把一个证书转化成CSR 
openssl x509 -x509toreq -in cert.pem -out req.pem -signkey key.pem 
给一个CSR进行处理,颁发字签名证书,增加CA扩展项 
openssl x509 -req -in careq.pem -extfile openssl.cnf -extensions v3_ca -signkey key.pem -out cacert.pem 
给一个CSR签名,增加用户证书扩展项 
openssl x509 -req -in req.pem -extfile openssl.cnf -extensions v3_usr -CA cacert.pem -CAkey key.pem -CAcreateserial 






你可能感兴趣的:(java,web)