https自制证书详解及okhttp3访问自制证书连接.docx
- 文档编号:3680740
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:6
- 大小:27.15KB
https自制证书详解及okhttp3访问自制证书连接.docx
《https自制证书详解及okhttp3访问自制证书连接.docx》由会员分享,可在线阅读,更多相关《https自制证书详解及okhttp3访问自制证书连接.docx(6页珍藏版)》请在冰豆网上搜索。
https自制证书详解及okhttp3访问自制证书连接
Https可行性分析
方正国际软件有限公司
2017年06月22日
目录
1服务器端调整2
1.1生成CA证书2
1.1.1创建私钥2
1.1.2创建证书请求2
1.1.3自签署证书2
1.1.4证书导出成浏览器支持的.p12格式3
1.2生成server证书3
1.2.1创建私钥3
1.2.2创建证书请求3
1.2.3自签署证书3
1.2.4将证书导成支持的.p12格式4
1.3生成client证书4
1.3.1创建私钥4
1.3.2创建证书请求4
1.3.3自签署证书5
1.3.4将证书导成浏览器支持的.p12格式5
1.4根据CA证书生成JKS文件5
1.5配置tomcatssl5
1.6验证ssl配置5
2Okhttp端调整6
2.1第三方签发证书6
2.2自制证书6
2.2.1访问7
插图和附表清单
图16
修改记录
序号
日期
作者
修改记录
评审
1
2017-06-20
张长东
创建
服务器端调整
生成CA证书
目前不使用第三方权威机构的CA来认证,自己充当CA的角色。
需要工具:
openssl(先安装openssl)
创建私钥
C:
\OpenSSL\bin>openssl genrsa -out ca/ca-key.pem 1024
注:
现在bin下创建ca文件夹
创建证书请求
C:
\OpenSSL\bin>openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem
-----
Country Name (2 letter code) [AU]:
cn
State or Province Name (full name) [Some-State]:
zhejiang
Locality Name (eg, city) []:
hangzhou
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
skyvision
Organizational Unit Name (eg, section) []:
test
Common Name (eg, YOUR name) []:
root
Email Address []:
sky
自签署证书
C:
\OpenSSL\bin>openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-key.pem -days 3650
证书导出成浏览器支持的.p12格式
C:
\OpenSSL\bin>openssl pkcs12 -export -clcerts -in ca/ca-cert.pem -inkey ca/ca-key.pem -out ca/ca.p12
密码:
changeit
生成server证书
创建私钥
C:
\OpenSSL\bin>openssl genrsa -out server/server-key.pem 1024
创建证书请求
C:
\OpenSSL\bin>openssl req -new -out server/server-req.csr -key server/server-key.pem
-----
Country Name (2 letter code) [AU]:
cn
State or Province Name (full name) [Some-State]:
zhejiang
Locality Name (eg, city) []:
hangzhou
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
skyvision
Organizational Unit Name (eg, section) []:
test
Common Name (eg, YOUR name) []:
192.168.1.246 注释:
一定要写服务器所在的ip地址
Email Address []:
sky
自签署证书
C:
\OpenSSL\bin>openssl x509 -req -in server/server-req.csr -out server/server-cert.pem -signkey server/server-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 3650
将证书导成支持的.p12格式
C:
\OpenSSL\bin>openssl pkcs12 -export -clcerts -in server/server-cert.pem -inkey server/server-key.pem -out server/server.p12
密码:
changeit
生成client证书
创建私钥
C:
\OpenSSL\bin>openssl genrsa -out client/client-key.pem 1024
创建证书请求
C:
\OpenSSL\bin>openssl req -new -out client/client-req.csr -key client/client-key.pem
-----
Country Name (2 letter code) [AU]:
cn
State or Province Name (full name) [Some-State]:
zhejiang
Locality Name (eg, city) []:
hangzhou
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
skyvision
Organizational Unit Name (eg, section) []:
test
Common Name (eg, YOUR name) []:
sky
Email Address []:
sky 注释:
就是登入中心的用户(本来用户名应该是Common Name,但是中山公安的不知道为什么使用的Email Address,其他版本没有测试)
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
123456
An optional company name []:
tsing
自签署证书
C:
\OpenSSL\bin>openssl x509 -req -in client/client-req.csr -out client/client-cert.pem -signkey client/client-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 3650
将证书导成浏览器支持的.p12格式
C:
\OpenSSL\bin>openssl pkcs12 -export -clcerts -in client/client-cert.pem -inkey client/client-key.pem -out client/client.p12
密码:
changeit
根据CA证书生成JKS文件
C:
\Java\jdk1.5.0_09\bin > keytool -keystore C:
\openssl\bin\jks\truststore.jks -keypass 222222 -storepass 222222 -alias ca -import -trustcacerts -file C:
\openssl\bin\ca\ca-cert.pem
配置tomcatssl
修改conf/server.xml,keystorefile, truststorefile设置为正确的相关路径
xml 代码 :
maxThreads="150"SSLEnabled="true"scheme="https"secure="true" clientAuth="false"sslProtocol="TLS"keystoreFile="C: \OpenSSL\bin\server\server.p12"keystorePass="changeit " keystoreType="PKCS12"truststoreFile="C: \OpenSSL\bin\jks\truststore.jks"truststorePass="222222"truststoreType="JKS"/> 验证ssl配置 启动tomcat,在浏览器中访问https: //ip: 8443,如果配置正确的话在第三方签发的证书地址栏会变绿,自制的证书会拦截(打死都要进去),会提示你不安全字样。 图1 Okhttp端调整 第三方签发证书 第三方签发证书直接使用https: //...访问即可。 newRequest.Builder().url(url).build(); 自制证书 将okhttp设置成信任所有证书 java代码: OkHttpClient.Builderbuilder=newOkHttpClient.Builder(); builder.hostnameVerifier(newTrustAllHostnameVerifier()) .sslSocketFactory(createSSLSocketFactory(),newTrustAllManager()); //安全套接层工厂,HTTPS相关,用于创建SSLSocket privatestaticSSLSocketFactorycreateSSLSocketFactory(){ SSLSocketFactorysSLSocketFactory=null; try{ SSLContextsc=SSLContext.getInstance("TLS"); sc.init(null,newTrustManager[]{newTrustAllManager()}, newSecureRandom()); sSLSocketFactory=sc.getSocketFactory(); }catch(Exceptione){ } returnsSLSocketFactory; } privatestaticclassTrustAllManagerimplementsX509TrustManager{ @Override publicvoidcheckClientTrusted(X509Certificate[]chain,StringauthType) throwsCertificateException{ } @Override publicvoidcheckServerTrusted(X509Certificate[]chain,StringauthType) throwsCertificateException{ } @Override publicX509Certificate[]getAcceptedIssuers(){ returnnewX509Certificate[0]; } } privatestaticclassTrustAllHostnameVerifierimplementsHostnameVerifier{ @Override publicbooleanverify(StringparamString,SSLSessionparamSSLSession){ returntrue; } } 1.1.1访问 newRequest.Builder().url(“https: //....”).build(); 访问成功。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- https 自制 证书 详解 okhttp3 访问 连接
![提示](https://static.bdocx.com/images/bang_tan.gif)