OpenSSL生成证书

要生成证书的目录下建立几个文件和文件夹,有
./demoCA/ 
./demoCA/newcerts/ 
./demoCA/private/ 
./demoCA/index.txt (空文件,生成证书时会将数据记录写入)
./demoCA/serial (在serial文件中写入第一个序列号“01”,在生成证书时会以此递增)

openssl中有如下后缀名的文件

.key格式:私有的密钥
.csr格式:证书签名请求(证书请求文件),含有公钥信息,certificate signing request的缩写
.crt格式:证书文件,certificate的缩写
.crl格式:证书吊销列表,Certificate Revocation List的缩写
.pem格式:用于导出,导入证书时候的证书的格式,有证书开头,结尾的格式
 
常用证书协议
x509v3: IETF的证书标准
x.500:目录的标准
SCEP:  简单证书申请协议,用http来进行申请,数据有PKCS#7封装,数据其实格式也是PKCS#10的
PKCS#7:  是封装数据的标准,可以放置证书和一些请求信息
PKCS#10:  用于离线证书申请的证书申请的数据格式,注意数据包是使用PKCS#7封装这个数据
PKCS#12:  用于一个单一文件中交换公共和私有对象,就是公钥,私钥和证书,这些信息进行打包,加密放在存储目录中,CISCO放在NVRAM中,用户可以导出,以防证书服务器挂掉可以进行相应恢复。思科是.p12,微软是.pfx

步骤:
生成CA私钥--》生成CA证书请求--》自签名得到根证书(CA给自已颁发的证书)
生成私钥--》生成证书请求--》通过CA签名得到证书

1.生成X509格式的CA自签名证书 
req -new -x509 -keyout ca.key -out ca.crt

rsa -in ca.key -out ca.key.unsecure //生成一个不需要口令保护的私钥,不推荐,可以于去除密码

2.生成服务端的私钥(key文件)及csr 文件
genrsa -des3 -out server.key 1024

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

3.生成客户端的私钥(key文件)及csr文件 
genrsa -des3 -out client.key 1024 
req -new -key client.key -out client.csr

4.用生成的CA的证书为刚才生成的server.csr,client.csr文件签名 
ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key 
ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key

【注意】

*进行CA签名获取证书时,需要注意国家、省、单位需要与CA证书相同,否则会报错

*进行CA签名获取证书时,如果信息完全和已有证书信息相同会报错,即不能生成相同的证书,报错信息为:

failed to update database
TXT_DB error number 2

*如出现:unable to access the ./demoCA/newcerts directory
这时可找到配置文件,一般是openssl.cnf,修改配置文件项为你生成证书的路径(修改配置文件时可能出现权限问题,用sudo chmod 777 openssl.cn获取权限)

[ CA_default ]

dir  = 你的路径

5. 生成p12格式证书 (思科是.p12,微软是.pfx)
pkcs12 -export -inkey client.key -in client.crt -out client.pfx 
pkcs12 -export -inkey server.key -in server.crt -out server.pfx
说明:-in 为欲转换为p12文件的证书文件,-inkey为与转换为p12文件的证书私钥文件,-passin 为私钥文件密码,-out为p12文件,-passout为p12文件打开密码

jks是JAVA的keytools证书工具支持的证书私钥格式。
pfx是微软支持的私钥格式。

ca证书生成jks文件

genrsa -out ca.pem 1024

req -new -out ca.csr -key ca.pem
x509 -req -in ca.csr -out ca.cer -signkey ca.key -CAcreateserial -days 3650
退出openssl,然后
keytool -import -v -trustcacerts -storepass 123456 -alias root -file ca.cer -keystore ca.jks

6.生成pem格式证书 
有时需要用到pem格式的证书,可以用以下方式合并证书文件(crt)和私钥文件(key)来生成 
cat client.crt client.key> client.pem 
cat server.crt server.key > server.pem

7.PFX文件转换为X509证书文件和RSA密钥文件 
pkcs12 -in server.pfx -nodes -out server.pem 
rsa -in server.pem -out server2.key 
x509 -in server.pem -out server2.crt

8. 其他相关命令
rsa -noout -text -in ca.key //查看私钥

Tomcat 配置

打开Tomcat/conf/server.xml文件,找到并修改以下代码:

 <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
maxThreads="150" scheme="https" schemeecure="true"
keystoreType="PKCS12" keystoreFile="证书存放路径/server.pfx" keystorePass="password" truststoreType="JKS" truststoreFile="证书存放路径/ca.jks" truststorePass="password"
clientAuth="true" sslProtocol="TLS" />

clientAuth是否启用客户端验证,也可以说是否是双向认证

Toncat-OpenSSL双向认证配置(iOS)的更多相关文章

  1. nginx支持ssl双向认证配置

    nginx支持ssl双向认证配置 listen 443; server_name test.com; ssl on; ssl_certificate server.crt; //server端公钥 s ...

  2. OpenSSL 双向认证

    在使用OpenSSL进行SSL双向认证时,需要在服务器和客户端配置如下接口函数: SSL_CTX_set_verify(SSL_CTX* ctx,int mode,int (*verify_callb ...

  3. apache用户认证,ssl双向认证配置

    安装环境: OS:contos 6.4 httpd:httpd-2.2.15-59.el6.centos.i686.rpm openssl:openssl-1.0.1e-57.el6.i686.rpm ...

  4. https 单向认证和双向认证配置

    HTTPS 是我们开发中经常用到的通信加密技术,能有效保护我们网络访问中的安全,本文主要讲解单向 和 双向 https 的配置.关于https 的实现原理在这里我就不赘述了,附上阮一峰老师的关于htt ...

  5. webservice ssl双向认证配置

    1.在tomcat中安装axis2插件 2.生成证书,用jdk自带的keytool 服务端 keytool -genkey -alias Server -dname "CN=192.168. ...

  6. 007.iSCSI服务器CHAP双向认证配置

    一 iSCSI和CHAP介绍 1.1 iSCSI 磁盘 iSCSI后端存储支持多种设备类型,主要有: 文件 单一分区(partition) 磁盘 数组 RAID LVM 本手册建议以裸磁盘vdb作为示 ...

  7. Tomcat下HTTPS双向认证配置以及客户端调用案例

    1:生成服务器端的keystore和truststore文件 (1)以jks格式生成服务器端包含Public key和Private Key的keystore文件 keytool -genkey -a ...

  8. Apache服务器SSL双向认证配置

    以Win32版Apache与OpenSSL为例,介绍从创建数字证书到Apache配置的整个过程,希望对读者有所帮助. Apache是目前最流行的WEB服务器之一,借助OpenSSL库,我们可以在Apa ...

  9. SSL交互简述及nginx双向认证配置

    一.证书生成. 1.SSL Server生成私钥/公钥对.server.key(加密)/server.pub(解密):2.server.pub生成请求文件server.csr,包含server的一些信 ...

随机推荐

  1. Feed系统架构资料收集(转)

    add by zhj:有些链接已经失效,后续会修改. 原文:http://blog.csdn.net/zhangzhaokun/article/details/7834797 完全用nosql轻松打造 ...

  2. centos Linux下磁盘管理 parted,df ,du,fdisk,partprobe,mkfs.ext4,mount,/etc/fstab,fsck,e2fsck,mk2efs,tmpfs ,nr_inodes, LVM,传统方式扩容文件系统 第七节课

    centos Linux下磁盘管理   parted,df ,du,fdisk,partprobe,mkfs.ext4,mount,/etc/fstab,fsck,e2fsck,mk2efs,tmpf ...

  3. Python学习开发资源大全列表

    1 机器学习和计算机视觉 Crab:灵活.快速的推荐引擎 gensim:人性化的话题建模库 hebel:GPU 加速的深度学习库 NuPIC:智能计算 Numenta 平台 pattern:Pytho ...

  4. mysql key index区别

    看似有差不多的作用,加了Key的表与建立了Index的表,都可以进行快速的数据查询.他们之间的区别在于处于不同的层面上. Key即键值,是关系模型理论中的一部份,比如有主键(Primary Key), ...

  5. ZOJ Monthly, January 2019

    A: Little Sub and Pascal's Triangle Solved. 题意: 求杨辉三角第n行奇数个数 思路: 薛聚聚说找规律,16说Lucas 答案是 $2^p \;\;p 为 n ...

  6. hdu6158 The Designer

    地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=6158 题目: The Designer Time Limit: 8000/4000 MS (J ...

  7. RPC和REST

    什么是RPC? 是指远程过程调用,就是两个服务A.B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据 ...

  8. Jedis连接池

    jedis是官方首选的java客户端开发包 Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如java.C.C#.C++.php.Node.js.Go等. 在官方网站里列一些Ja ...

  9. ubuntu16.04安装tensorflow官方教程与机器学习资料【学习笔记】

    tensorflow官网有官方的安装教程:https://www.tensorflow.org/install/install_linux google的机器学习官方快速入门教程:https://de ...

  10. 基于Oracle Sequence的流水号生成规则

    流水号在各种系统中随处可见,一般都是使用自增.年月日时分秒+自增.UUID等,要么纯数字,要么纯字母,这种流水号缺乏一定的辨识度. 下面为大家介绍一种具有辨识度的流水号的生成方式:领域或者应用的标识 ...