您的位置:首页 > 理论基础 > 计算机网络

HTTPS-Linux服务器Nginx配置、Android客户端证书生成

2014-05-29 09:40 731 查看
实现HTTPS通信:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐