HTTPS-Linux服务器Nginx配置、Android客户端证书生成
2014-05-29 09:40
731 查看
实现HTTPS通信:
Server端在WEB服务器Nginx 上配置Https连接,接收Https连接请求,实现Https协议。
安卓客户端加载可信证书,BKS格式证书。该证书从服务器端证书导出来。
#yum install openssl-devel
#cd/usr/local/nginx/conf
2) 生成RSA非对称密钥:包括公钥和私钥;参数中-des3是密钥文件的加密算法,这个生成过程中会要求操作人输入des3算法的密码,比如:123456
#openssl genrsa-des3 -out server.key 1024
3) 基于上面生成的密钥,生成“签名请求”文件,准备用于签名。生成Certificate Signing Request(CSR),生成的csr文件交给CA签名后形成服务端自己的证书.屏幕上将有提示,依照其指示一步一步输入要求的个人信息即可.
#openssl req-new -key server.key -out server.csr
4) 由于密钥文件是使用des3加密过的,所以为了使用方便,去掉加密,即生成的server_nopwd.key为去掉加密的密钥文件。
#openssl rsa -inserver.key -out server_nopwd.key
5) 生成证书,并签名:-days表示证书有效期,这里设置为3650天(10年),最后的输出文件为server.crt即服务器端证书。
#openssl x509-req -days 3650 -in server.csr -signkey server_nopwd.key -out server.crt
6) 配置Nginx
server {
listen
443;
sslon;
ssl_certificate /usr/local/nginx/conf/server.crt;
ssl_certificate_key /usr/local/nginx/conf/server_nopwd.key;
}
重启Nginx
ps:如果出现“[emerg] 10464#0: unknown directive "ssl" in/usr/local/nginx-0.6.32/conf/nginx.conf:74”则说明没有将ssl模块编译进nginx,在configure的时候加上“--with-http_ssl_module”即可^^
至此已经完成了https服务器搭建,但如何让浏览器信任自己颁发的证书呢?
今天终于研究捣鼓出来了,只要将之前生成的server.crt文件导入到系统的证书管理器就行了,具体方法:
控制面板 -> Internet选项 ->
内容 -> 发行者 ->
受信任的根证书颁发机构 ->
导入 -》选择server.crt
keytool -importcert -keystore client.bks -file server.crt -storetype BKS -providerclassorg.bouncycastle.jce.provider.BouncyCastleProvider -providerpath./bcprov-ext-jdk15on-150.jar -storepass 123456
Server端在WEB服务器Nginx 上配置Https连接,接收Https连接请求,实现Https协议。
安卓客户端加载可信证书,BKS格式证书。该证书从服务器端证书导出来。
(一) Linux服务器端配置步骤
#号表示命令引导符1. 首先确保机器上安装了openssl和openssl-devel
#yum install openssl#yum install openssl-devel
2. 然后就是自己颁发证书给自己
1) 切换到Nginx的配置文件目录#cd/usr/local/nginx/conf
2) 生成RSA非对称密钥:包括公钥和私钥;参数中-des3是密钥文件的加密算法,这个生成过程中会要求操作人输入des3算法的密码,比如:123456
#openssl genrsa-des3 -out server.key 1024
3) 基于上面生成的密钥,生成“签名请求”文件,准备用于签名。生成Certificate Signing Request(CSR),生成的csr文件交给CA签名后形成服务端自己的证书.屏幕上将有提示,依照其指示一步一步输入要求的个人信息即可.
#openssl req-new -key server.key -out server.csr
4) 由于密钥文件是使用des3加密过的,所以为了使用方便,去掉加密,即生成的server_nopwd.key为去掉加密的密钥文件。
#openssl rsa -inserver.key -out server_nopwd.key
5) 生成证书,并签名:-days表示证书有效期,这里设置为3650天(10年),最后的输出文件为server.crt即服务器端证书。
#openssl x509-req -days 3650 -in server.csr -signkey server_nopwd.key -out server.crt
6) 配置Nginx
server {
listen
443;
sslon;
ssl_certificate /usr/local/nginx/conf/server.crt;
ssl_certificate_key /usr/local/nginx/conf/server_nopwd.key;
}
重启Nginx
ps:如果出现“[emerg] 10464#0: unknown directive "ssl" in/usr/local/nginx-0.6.32/conf/nginx.conf:74”则说明没有将ssl模块编译进nginx,在configure的时候加上“--with-http_ssl_module”即可^^
至此已经完成了https服务器搭建,但如何让浏览器信任自己颁发的证书呢?
今天终于研究捣鼓出来了,只要将之前生成的server.crt文件导入到系统的证书管理器就行了,具体方法:
控制面板 -> Internet选项 ->
内容 -> 发行者 ->
受信任的根证书颁发机构 ->
导入 -》选择server.crt
(二) 安卓客户端证书生成
使用JDK自带的keytool工具,把服务器端CRT格式的证书导出一个BKS格式的证书,由于JDK自带的不支持BKS,所以需要一个第三方Jar包支持:bcprov-ext-jdk15on-150.jar.keytool -importcert -keystore client.bks -file server.crt -storetype BKS -providerclassorg.bouncycastle.jce.provider.BouncyCastleProvider -providerpath./bcprov-ext-jdk15on-150.jar -storepass 123456
相关文章推荐
- nginx配置https及Android客户端访问自签名证书
- HTTPS证书验证流程及SSL证书生成步骤【附nginx开启https配置】
- Windows下Nginx配置SSL实现Https访问(包含证书生成)
- Windows下Nginx配置SSL实现Https访问(包含证书生成) Windows下Nginx配置SSL实现Https访问(包含证书生成) 首先要说明为什么要实现https? HTTP
- Windows下Nginx配置SSL实现Https访问(包含证书生成)
- HTTPS证书生成,Nginx + Tomcat 配置HTTPS
- Windows下Nginx配置SSL实现Https访问(包含证书生成)
- Windows下Nginx配置SSL实现Https访问(包含证书生成)
- Windows下Nginx配置SSL实现Https访问(包含证书生成) Windows下Nginx配置SSL实现Https访问(包含证书生成) 首先要说明为什么要实现https? HTT
- Windows下Nginx配置SSL实现Https访问(包含证书生成)
- 最新Https请求原理、OPenssl生成证书、nginx的https配置
- nginx中使用https时,证书的生成方式及配置
- 在linux(centos)使用openssl生成https证书并配置到nginx的实现过程
- Windows下Nginx配置SSL实现Https访问(包含证书生成)
- 转自《https安全链接的配置教程:startSSl免费证书申请与nginx的https支持配置》
- keytool生成keystore、truststore、证书以及SSL单向认证在服务端tomcat和客户端的配置
- Tomcat配置HTTPS方式生成安全证书
- 【网页访问单向、双向验证均可以】https原理及tomcat配置https方法[生成CA根证书配置tomcat后,若要成功访问axis中的webservice,需要配置它对应的axis2.xml文件]
- tomcat7+jdk的keytool生成证书 配置https
- nginx 自签名证书 配置 https