https环境搭建配置(基于Tomcat和Nginx)

1、基于Tomcat、JDK内置密钥工具:nginx


一、生成服务端证书库(keystore证书库文件),用于客户端验证服务端的真实性 shell

keytool -genkey -v -alias key_server -keyalg RSA -keystore e:\server.keystore -dname "CN=D-F005227,OU=youku,O=zhibohudong,L=beijing,ST=beijing,C=cn" -storepass Aa123 -keypass Aa123 -validity 36000


颁发者信息:浏览器

CN : 通常指本站点域名或站长姓名(common name)安全

OU : 组织单位名称(organization unit)服务器

O : 组织名称(organization)工具

L : 城市或区域(location)加密

ST : 州或省份(state)spa

C : 两字母国家代码(country)code


二、生成客户端证书(PKCS12文件),用于双向认证中服务端验证客户端请求来源是否合法用户 server

keytool -genkey -v -alias key_client -keyalg RSA -storetype PKCS12 -keystore e:\client.p12 -dname "CN=D-F005227,OU=youku,O=zhibohudong,L=beijing,ST=beijing,C=cn" -storepass Bb123 -keypass Bb123 -validity 36000


三、让服务端信任客户端证书,将客户端证书导出为CER文件

keytool -export -alias key_client -keystore e:\client.p12 -storetype PKCS12 -storepass Bb123 -rfc -file e:\client.cer


四、将step 3中导出的客户端证书(CER文件)导入到step 1中的服务端证书库中,以完成信任绑定

keytool -import -v -file e:\client.cer -keystore e:\server.keystore -storepass Aa123


五、Tomcat服务器配置,支持https安全链接(SSL双向验证,clientAuth=true|false|want)

打开TOMCAT_HOME\conf\server.xml,在<Service name="Catalina">下新增:

  <Connector port="4433" protocol="HTTP/1.1" SSLEnabled="true" 
    maxThreads="150" scheme="https" secure="true" clientAuth="true" 
    sslProtocol="TLS" keystoreFile="e:/server.keystore" keystorePass="Aa123" 
    truststoreFile="e:/server.keystore" truststorePass="Aa123"/>

六、让客户端导入证书,以便完成双向认证,正常访问

call e:/client.p12


七、导出服务端证书,安装在客户端(证书存储位置:授信任的根证书颁发机构),以便创建信任链接,保证客户端不会提示不信任的站点(若是服务端证书是经权威证书机构颁发,则无须执行该步骤)

keytool -export -alias key_server -keystore e:\server.keystore -storepass Aa123 -rfc -file e:\server.cer

call e:/server.cer


八、启动服务器,访问验证

输入地址:https://d-f005227:4433,可爱的汤姆小猫出现了,且地址栏前面出现一把绿色的锁,OK,打完收工!



附:在开启双向SSL认证(clientAuth=true)时,使用Firefox浏览器访问会提示

这时须要手动按如下步骤导入客户端证书:

菜单 --> 工具 --> 选项 --> 高级 --> 证书 --> 查看证书 --> 您的证书 --> 导入 --> 选择client.p12 --> 输入客户端证书密钥 --> 提示导入成功 --> 肯定 --> 刷新页面 --> over



2、基于Nginx、Linux下OpenSSL密钥工具


一、进入密钥、证书文件存放路径(自定义)

cd /etc/nginx/conf


二、生成2048位长的密钥,并用des3加密

openssl genrsa -des3 -out server.key 2048


三、用step 2中生成的密钥来生成服务端证书请求文件

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

  若是step 2中采用des3加密了,须要输入step 2设置的密码


颁发者信息:

  Country Name:两字母国家代码

  State or Province Name:州或省份

  Locality Name:城市或区域

  Organization Name:组织名称

  Organizational Unit Name:组织单位名称

  Email Address:邮件地址

  A challenge password:为证书设置密码

  An optional company name:公司名称(可不填写)


四、使用step 2中生成的密钥和step 3中生成的证书请求文件来生成服务端数字证书文件

openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt


五、Nginx配置

  在http范围内增长以下配置

server {
    listen       80;
    server_name  localhost d-f005227;
    ssl on;
    ssl_certificate server.crt;
    ssl_certificate_key server.key;
    ssl_verify_client on;    # 开启客户端认证
    ssl_client_certificate client.crt;    # 客户端认证数字证书(生成方式省略)
    location / {
        proxy_pass http://localhost:8080 ;
    }
}
相关文章
相关标签/搜索