openssl 1.0.2d安装使用教程

2023-10-27

本文简要介绍CA和证书的基础知识,并演示openssl-1.0.2d的安装,CA证书生成、用户证书申请、使用CA签发用户证书等内容。另外,可以参考本人的其他文章如nginx教程,进行生成证书的验证。

By 泪痕之木

实验环境

操作系统:CentOS 6.7

主机名:centos6

openssl版本:openssl-1.0.2d.tar.gz(官网获取)

1 基础知识

1.1 PKI

为解决Internet的安全问题,世界各国对其进行了多年的研究,初步形成了一套完整的Internet安全解决方案,即目前被广泛采用的PKI体系结构。

它是利用公开密钥技术所构建的,解决网络安全问题的,普遍适用的一种基础设施。美国政府的一个报告中把 PKI 定义为全面解决安全问题的基础结构,从而大大扩展了 PKI 的概念。而我们认为,采用了公开密钥技术的基础设施就可以称为 PKI 。公开密钥技术也就是利用非对称算法的技术。

PKI(PublicKeyInfrastructure)公钥基础设施是提供公钥加密和数字签名服务的系统或平台,目的是为了管理密钥和证书。PKI体系结构采用证书管理公钥,通过第三方的可信机构CA,把用户的公钥和用户的其他标识信息(如名称、e-mail、***号等)捆绑在一起,在Internet网上验证用户的身份,PKI体系结构把公钥密码和对称密码结合起来,在Internet网上实现密钥的自动管理,保证网上数据的机密性、完整性。

PKI 中最基本的元素就是数字证书。所有安全的操作主要通过证书来实现。 PKI 的硬设备还包括签置这些证书的证书机构 (CA) ,登记和批准证书签置的登记机构 (RA) ,以及存储和发布这些证书的电子目录。 PKI 中还包括证书策略,证书路径以及证书的使用者。所有这些都是 PKI 的基本元素。许多这样的基本元素有机地结合在一起就构成了 PKI 。

由于PKI体系结构是目前比较成熟、完善的Internet网络安全解决方案,国外的一些大的网络安全公司纷纷推出一系列的基于PKI的网络安全产品,如美国的Verisign,IBM,Entrust等安全产品供应商为用户提供了一系列的客户端和服务器端的安全产品,为电子商务的发展提供了安全保证。为电子商务、政府办公网、EDI等提供了完整的网络安全解决方案。

1.2 数字证书
1.2.1 数字证书简介

数字证书采用PKI(Public Key Infrastructure)公开密钥基础架构技术,利用一对互相匹配的密钥进行加密和解密。

每个用户自己设定一把特定的仅为本人所知的私有密钥(私钥),用它进行解密和签名;同时设定一把公共密钥(公钥),由本人公开,为一组用户所共享,用于加密和验证签名。当发送一份保密文件时,发送方使用接收方的公钥对数据加密,而接收方则使用自己的私钥解密,通过数字的手段保证加解密过程是一个不可逆过程,即只有用私有密钥才能解密,这样保证信息安全无误地到达目的地。用户也可以采用自己的私钥对发送信息加以处理,形成数字签名。由于私钥为本人所独有,这样可以确定发送者的身份,防止发送者对发送信息的抵赖性。接收方通过验证签名还可以判断信息是否被篡改过。即使已知明文、密文和加密密钥(公开密钥),想要推导出解密密钥(私密密钥),在计算上是不可能的。按现在的计算机技术水平,要破解目前采用的2048位RSA密钥,需要上千年的计算时间。

1.2.2 数字证书颁发机构-CA

数字证书是由认证中心颁发的,认证中心是一家能向用户签发数字证书以确认用户身份的管理机构,这样的证书颁发管理机构一般称为CA。

为了防止数字凭证的伪造,认证中心的公共密钥必须是可靠的,认证中心必须公布其公共密钥或由更高级别的认证中心提供一个电子凭证来证明其公共密钥的有效性,后一种方法导致了多级别认证中心的出现。

clip_p_w_picpath001

CA也拥有一个证书(内含公钥和私钥)。网上的公众用户通过验证 CA 的签字从而信任 CA ,任何人都可以得到 CA 的证书公钥,用以验证它所签发的证书。

数字证书颁发过程如下:用户首先产生自己的密钥对,并将公共密钥及部分个人身份信息传送给认证中心。认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息。用户就可以使用自己的数字证书进行相关的各种活动。

如果一个用户想鉴别另一个证书的真伪,他会用 CA 的公钥对该证书上的签字进行验证,一旦验证通过,该证书就被认为是有效的。证书实际是由证书签证机关(CA)签发的对用户的公钥的认证。

通常情况下,证书的内容包括:电子签证机关的信息、公钥用户信息、公钥、权威机构的签字和有效期等等。

目前,证书的格式和验证方法普遍遵循X.509 国际标准。

1.2.3 数字证书解决的问题

在使用数字证书的过程中应用公开密钥加密技术,建立起一套严密的身份认证系统,它能够保证:

信息除发送方和接受方外不被其他人窃取;

信息在传输过程中不被篡改;

接收方能够通过数字证书来确认发送方的身份;

发送方对于自己发送的信息不能抵赖。

以电子邮件证书为例,数字证书主要可以解决:

保密性:通过使用收件人的数字证书对电子邮件加密,只有收件人才能阅读加密的邮件,这样保证在Internet上传递的电子邮件信息不会被他人窃取,即使发错邮件,收件人由于无法解密而不能够看到邮件内容。

完整性:利用发件人数字证书在传送前对电子邮件进行数字签名不仅可确定发件人身份,而且可以判断发送的信息在传递的过程中是否被篡改过。

身份认证:在Internet上传递电子邮件的双方互相不能见面,所以必须有方法确定对方的身份。利用发件人数字证书在传送前对电子邮件进行数字签名即可确定发件人身份,而不是他人冒充的。

不可否认性:发件人的数字证书只有发件人唯一拥有,故发件人利用其数字证书在传送前对电子邮件进行数字签名后,发件人就无法否认发送过此电子邮件。

1.3 SSL证书

随着Internet的普及、各种电子商务活动和电子政务活动的飞速发展,数字证书开始广泛地应用到各个领域之中,目前主要包括:访问安全站点(服务器证书,即SSL证书)、软件安全认证(代码签名证书)、发送安全电子邮件(个人电子邮件证书)、网上招标投标、网上签约、网上订购、安全网上公文传送、网上缴费、网上缴税、网上炒股、网上购物和网上报关(个人签名及加密证书)等。

1.3.1 SSL简介

SSL(Secure Sockets Layer,安全套接层)是支持在网络服务器(主机)与网页浏览器(客户端)间建立加密连接的标准技术。运用SSL技术后,保证了主机与客户端连接过程中的数据安全。随着电子商务的发展,越来越多的运用SSL保护用户在线交易的安全性。如果您访问某网站时,在浏览器地址栏输入的地址以“https://”开头,则代表您正通过SSL建立安全连接。

clip_p_w_picpath002

使用SSL证书后,即在用户网络浏览器及网络服务器间创建了加密数据连接,这也就意味着,服务器与浏览器间的任何交易数据在解密前是不可读的。因此,正由于加密数据不易理解性,也防止了网络中的第三者窥探数据信息。

如何建立加密连接

clip_p_w_picpath004

在尝试建立安全连接前,需要进行以下三步操作:

1、在地址栏输入或选择安全URL,例如“https://www.baidu.com”;

2、服务器在收到您发送的安全连接请求后,提交尝试在浏览器与服务器间建立可信任连接的回复,这也就是所谓的“SSL握手”;

3、通过SSL握手验证SSL证书后,服务器与客户端间的数据将会以加密的形式传输,保证其隐私与安全。

1.3.2 如何辨别网站是否使用SSL

如果网站使用了SSL证书,虽然SSL协议具体内容并不会直接展示给用户,但大部分浏览器支持在地址栏显示一个锁的图案或其他形式证明其使用了SSL,这也表明了您目前正享受SSL加密会话的保护。如果您想了解SSL证书详细信息,只需点击地址栏头部“锁”的图标即可。

1.3.3 SSL对访问者意味着什么

大部分SSL证书包含域名、公司名称、国家及详细地址,当然也包含证书的有效期与证书颁发机构的详细信息。当浏览器尝试与网站建立SSL连接时,会首先核实证书是否过期,是否由可信任的机构颁发以及网站是否正确。如果有任一项出现错误,浏览器将会提示警告,告知用户网站未使用SSL。

2 openssl安装

将下载的openssl安装包上传至服务器,这里上传到了/root目录

[root@centos6 ~]# ls

anaconda-ks.cfg install.log.syslog 公共的 视频 文档 音乐

install.log openssl-1.0.2d.tar.gz 模板 图片 下载 桌面

openssl安装依赖于gcc包,需先配置YUM源,安装gcc

[root@centos6 ~]# vi /etc/yum.repos.d/rhel6.repo

[RHEL6.7]

name=RHEL6.7-ISO

baseurl=file:///mnt #这里将光盘挂载到了/mnt目录,所以指定YUM的路径为/mnt

gpgcheck=0

enabled=0

[root@centos6 ~]# yum clean all

[root@centos6 openssl-1.0.2d]# yum install gcc\* -y

注:如果未安装gcc,直接编译openssl会有如下错误提示

make[1]: gcc:命令未找到

make[1]: *** [cryptlib.o] 错误 127

make[1]: Leaving directory `/root/openssl-1.0.2d/crypto'

make: *** [build_crypto] 错误 1

解压openssl安装包,并设置安装目录为/usr/local/openssl-1.0.2d

[root@centos6 ~]# tar zxvf openssl-1.0.2d.tar.gz

[root@centos6 ~]# cd openssl-1.0.2d

[root@centos6 openssl-1.0.2d]# ./config --prefix=/usr/local/openssl-1.0.2d

编译并安装openssl

[root@centos6 openssl-1.0.2d]# make && make install

创建openssl命令的软链接,相当于Windows的快捷方式

[root@centos6 openssl-1.0.2d]# ln -s /usr/local/openssl-1.0.2d/bin/openssl /usr/bin/openssl

查看已安装openssl的版本

[root@centos6 ~]# openssl

OpenSSL> version

OpenSSL 1.0.2d 9 Jul 2015

3 使用CA颁发证书

3.1 创建CA目录结构

建立CA目录结构

[root@centos6 openssl-1.0.2d]# cd /usr/local/openssl-1.0.2d/ssl

[root@centos6 ssl]# mkdir -p CA/{private,newcerts}

创建证书数据库文件和序号文件

[root@centos6 ssl]# cd CA/

[root@centos6 CA]# touch index.txt

[root@centos6 CA]# echo '01' > serial

查看已经创建的目录及文件

[root@centos6 CA]# ls

certs index.txt private serial

注:CA的目录、文件、证书、私钥名称等都在/usr/local/openssl-1.0.2d/ssl/oopenssl.cnf中存在相关配置,如果需要更改这些内容,请现在openssl.cnf中更改相应设置项

clip_p_w_picpath006

3.2 编辑openssl配置文件

在openssl配置文件中指定创建的CA目录

将配置文件中默认的“dir = ./demoCA”修改为“dir = /usr/local/openssl-1.0.2d/ssl/CA”

[root@centos6 CA]# pwd

/usr/local/openssl-1.0.2d/ssl/CA

[root@centos6 CA]# vim ../openssl.cnf

clip_p_w_picpath008

3.3 CA根证书生成
3.3.1 生成RSA私钥

私钥一般会加密,生成过程需要指定加密口令,这里设置的是“123456”

[root@centos6 CA]# openssl genrsa -des3 -out private/cakey.pem

Generating RSA private key, 2048 bit long modulus

.+++

..................................+++

e is 65537 (0x10001)

Enter pass phrase for private/cakey.pem:123456

Verifying - Enter pass phrase for private/cakey.pem:123456

注:需要输入pass phrase的地方,输入是没有任何显示的,在文档中实际标注,只是为了便于理解。

注:-des|-des3|-idea|-aes128|-aes192|-aes256 指定私钥口令保护算法,如果不指定,私钥将被明文存放

如果不想加密私钥,将私钥明文存放

[root@centos6 CA]# openssl genrsa -out private/cakey.pem

注:numbits 生成密钥的位数。必须是本指令的最后一个参数。如果没有指明,该openssl版本生成2048位密钥

如果要生成4096位密钥

[root@centos6 CA]# openssl genrsa -des3 -out private/cakey.pem 4096

如果需要将已经加密的私钥转换为不加密

[root@centos6 CA]# openssl rsa -in serverkey.pem -out serverkey2.pem

查看生成的RSA私钥

[root@centos6 CA]# openssl rsa -noout -text -in private/cakey.pem

Enter pass phrase for private/cakey.pem:

3.3.2 使用私钥生成证书请求

[root@centos6 CA]# openssl req -new -key private/cakey.pem -out careq.pem

Enter pass phrase for private/cakey.pem:123456

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [AU]:cn

State or Province Name (full name) [Some-State]:cn

Locality Name (eg, city) []:cn

Organization Name (eg, company) [Internet Widgits Pty Ltd]:cn

Organizational Unit Name (eg, section) []:cn

Common Name (e.g. server FQDN or YOUR name) []:ca.lhzm.com

Email Address []:admin@lhzm.com

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

注:使用私钥生成请求的过程中,需要输入调用私钥的口令

注:这里需要输入国家,地区,组织,email等。最重要的是 Common Name,可以写你的域名或主机名。如果为了 https 申请,这个必须和域名一样。即,如果要申请域名“www.abc.com”这里要写 “www.abc.com”,否则某个网站使用域名和证书Common Name不一致,访问该网站会引发浏览器警报。这里也可以用“ *.abc.com ”来做泛域名证书。

注:证书签发时不指定policy参数的话,默认openssl配置文件中调用的是policy_match策略,所有的非optional项都必须填写。下面是openssl.cnf配置文件中policy-match策略的内容

clip_p_w_picpath009

3.3.3 生成自签名证书

由于目前还没有任何证书存在,所以这里通过自签名生成证书,所生成的证书可以称为自签名证书,该自签名证书可以看做此CA的根证书

[root@centos6 CA]# openssl ca -selfsign -days 3650 -in careq.pem -out cacert.pem

Using configuration from /usr/local/openssl-1.0.2d/ssl/openssl.cnf

Enter pass phrase for /usr/local/openssl-1.0.2d/ssl/CA/private/cakey.pem:123456

Check that the request matches the signature

Signature ok

Certificate Details:

Serial Number: 1 (0x1)

Validity

Not Before: Dec 4 07:13:25 2015 GMT

Not After : Dec 1 07:13:25 2025 GMT

Subject:

countryName = cn

stateOrProvinceName = cn

organizationName = cn

organizationalUnitName = cn

commonName = ca.lhzm.com

emailAddress = admin@lhzm.com

X509v3 extensions:

X509v3 Basic Constraints:

CA:FALSE

Netscape Comment:

OpenSSL Generated Certificate

X509v3 Subject Key Identifier:

D3:A2:B4:D0:0E:FC:F5:71:97:02:74:A2:BA:25:23:8D:8E:D8:6D:4B

X509v3 Authority Key Identifier:

keyid:D3:A2:B4:D0:0E:FC:F5:71:97:02:74:A2:BA:25:23:8D:8E:D8:6D:4B

Certificate is to be certified until Dec 1 07:13:25 2025 GMT (3650 days)

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated

注:从“Using configuration from……”可以看出调用的是哪个openssl配置文件。

-days 该参数指定生成证书的有效期,以天为单位,这里指定的是10年。证书请求也可以使用该参数指定要申请的证书期限,但即使指定了申请期限,还是以这里的签发时间为准,也就是签发的优先级更高。如果不指定-days参数,也会调用openssl.cnf默认的时间设置365天。

注:自签名证书的证书请求和证书生成,可以将两步合二为一

[root@centos6 CA]# openssl req -new -x509 -days 3650 -key private/cakey.pem -out cacert.pem

查看证书数据库文件,可以看到已经生成的证书信息

[root@centos6 CA]# cat index.txt

V 251201071325Z 01 unknown /C=cn/ST=cn/O=cn/OU=cn/CN=ca.lhzm.com/emailAddress=admin@lhzm.com

查看创建的序号文件,可以看到颁发一个证书后,编号自动更新

[root@centos6 CA]# cat serial

02

注:如果只是为了测试使用,目前得到的私钥cakey.pem和证书cacert.pem已经可以用作web程序私钥和SSL证书。

3.4 用户证书生成
3.4.1 生成RSA私钥

[root@centos6 CA]# openssl genrsa -des3 -out private/lhzmkey.pem

Generating RSA private key, 2048 bit long modulus

.........................................................+++

.................................................................................................................+++

e is 65537 (0x10001)

Enter pass phrase for private/lhzmkey.pem:qwerty

Verifying - Enter pass phrase for private/lhzmkey.pem: qwerty

3.4.2 使用私钥生成证书请求

[root@centos6 CA]# openssl req -new -key private/lhzmkey.pem -out lhzmreq.pem

Enter pass phrase for private/lhzmkey.pem: qwerty

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [AU]:

State or Province Name (full name) [Some-State]:

Locality Name (eg, city) []:

Organization Name (eg, company) [Internet Widgits Pty Ltd]:

Organizational Unit Name (eg, section) []:

Common Name (e.g. server FQDN or YOUR name) []:*.lhzm.com

Email Address []:

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

注:下一步的证书签发会演示使用policy参数,并指定policy_anything策略,所以这里只填写了Common Name

clip_p_w_picpath013

3.4.3 CA签发证书

使用CA证书签发用户证书申请,从而生成用户证书(用户证书代表某个用户对象向CA申请的证书,而不是计算机用户的意思)

[root@centos6 CA]# openssl ca -policy policy_anything -days 730 -in lhzmreq.pem -out newcerts/lhzmcert.pem

Using configuration from /usr/local/openssl-1.0.2d/ssl/openssl.cnf

Enter pass phrase for /usr/local/openssl-1.0.2d/ssl/CA/private/cakey.pem:123456

Check that the request matches the signature

Signature ok

Certificate Details:

Serial Number: 2 (0x2)

Validity

Not Before: Dec 4 07:17:22 2015 GMT

Not After : Dec 3 07:17:22 2017 GMT

Subject:

countryName = AU

stateOrProvinceName = Some-State

organizationName = Internet Widgits Pty Ltd

commonName = *.lhzm.com

X509v3 extensions:

X509v3 Basic Constraints:

CA:FALSE

Netscape Comment:

OpenSSL Generated Certificate

X509v3 Subject Key Identifier:

68:8E:0B:E1:75:04:49:FC:87:FD:91:FB:6E:43:8F:45:50:B9:1B:A9

X509v3 Authority Key Identifier:

keyid:D3:A2:B4:D0:0E:FC:F5:71:97:02:74:A2:BA:25:23:8D:8E:D8:6D:4B

Certificate is to be certified until Dec 3 07:17:22 2017 GMT (730 days)

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated

注:由于这里使用CA公钥签发证书,所以签发过程会调用CA的私钥,输入的pass phrase是CA私钥“cakey.pem”的口令。

该证书包含CA信息、CA签字、用户信息、用户公钥、证书有效期等信息。

-policy 指定调用openssl.cnf的哪条策略,这里指定了policy_anything策略。

-cert 该参数可以指定签发证书的公钥

-keyfile 指定使用的私钥,调用的公钥和私钥必须是一对

[root@centos6 CA]# openssl ca -policy policy_anything -days 730 -cert cacert.pem -keyfile private/cakey.pem -in lhzmreq.pem -out newcerts/lhzmcert.pem

查看证书数据库文件,可以看到已经生成的证书信息

[root@centos6 CA]# cat index.txt

V 251201071325Z 01 unknown /C=cn/ST=cn/O=cn/OU=cn/CN=ca.lhzm.com/emailAddress=admin@lhzm.com

V 171203071722Z 02 unknown /C=AU/ST=Some-State/O=Internet Widgits Pty Ltd/CN=*.lhzm.com

查看创建的序号文件,可以看到颁发一个证书后,编号自动更新

[root@centos6 CA]# cat serial

03


4 证书格式转换

4.1 PFX-PEM(pkcs12)

假设目前拥有PKCS#12用户证书server.pfx

l 只导出用户证书

openssl pkcs12 -in server.pfx -nokeys -nodes -out servercert.pem

l 用户私钥导出

openssl pkcs12 -in server.pfx -nocerts -nodes -out serverkey.pem

l CA证书导出

openssl pkcs12 -in server.pfx -cacerts -nokeys -out cacert.pem

选项:

-in filename:指定私钥和证书读取的文件,默认为标准输入。必须为PEM格式。

-out filename:指定输出的pkcs12文件,默认为标准输出。

-password arg:指定导入导出口令来源。

-passin arg:输入文件保护口令来源。

-passout arg:指定所有输出私钥保护口令来源。

-noout:不打印参数编码的版本信息。

-clcerts:仅仅输出客户端证书,不输出CA证书。

-cacerts:仅仅输出CA证书,不输出客户端证书。

-nocerts:不输出任何证书。

-nokeys:不输出任何私钥信息值。

-info:输出PKCS#12文件结构的附加信息值。例如用的算法信息以及迭代次数。

-des:在输出之前用DES算法加密私钥值。

-des3:在输出之前用3DES算法加密私钥值。此项为默认。

-idea:在输出之前用IDEA算法加密私钥值。

-aes128、-aes192、-aes256:在输出之前用AES算法加密私钥值。

-camellia128、-camellia192、-camellia256:在输出之前用camellia算法加密私钥值。

-nodes:对私钥不加密。

-nomacver:读取文件时不验证MAC值的完整性。

-twopass:需要用户分别指定MAC口令和加密口令。

文件创建选项:

-export:这个选项指定了一个PKCS#12文件将会被创建。

-in filename:指定私钥和证书读取的文件,默认为标准输入。必须为PEM格式。

-out filename:指定输出的pkcs12文件,默认为标准输出。

-inkey filename:指定私钥文件的位置。如果没有被指定,私钥必须在-in filename中指定。

-name name:指定证书以及私钥的友好名字。当用软件导入这个文件时,这个名字将被显示出来。

-certfilefilename:添加filename中所有的证书信息值。

-caname name:指定其它证书的友好名字。这个选项可以被用于多次。

-password arg:指定导入导出口令来源。

-passin arg:输入文件保护口令来源。

-passout arg:指定所有输出私钥保护口令来源。

-chain:如果这个选项被提出,则添加用户证书的证书链。标准CA中心用它来搜索。如果搜索失败,则是一个重大的错误。

-descert:用3DES对PKCS12进行加密,这样杨浦可能会导致PKCS12文件被一些“export grade”软件不能够读取。默认的是用3DES对私钥文件进行加密,用40位的RC2对证书公钥文件进行加密。

-certpbealg:该选项允许指定证书的加密算法。任何PKCS#5 v1.5或 PKCS#12 PBE类型的算法都可以被使用。默认使用的是40位的RC2。

-keypbe alg:该选项允许指定证书私钥的加密算法。任何PKCS#5 v1.5或 PKCS#12 PBE类型的算法都可以被使用。默认使用的是3DES。

-keyex:设置私钥仅仅被用于密钥交换。

-keysig:设置私钥仅仅被用于数字签名。

-macalg digest:指定MAC摘要算法。如果没有被指定,则默认使用sha1。

-nomaciter、-noiter:这个选项影响MAC值和密钥算法的迭代次数。除非你希望产生的文件能与MSIE 4.0相兼容,可以把这两个选项丢弃一边。

-maciter:加强完整性保护,多次计算MAC。

-nomac:不去规定MAC值的完整性。

-rand file(s):指定随机数种子文件,多个文件间用分隔符分开,windows用“;”,OpenVMS用“,“,其他系统用“:”。

-CApatharg:指定CA目录。该目录必须是一个标准证书目录:每个CA文件的文件名为XXXX.0,XXXX为其持有者摘要值。

-CAfile arg:指定CA文件。

-LMK:添加本地的机械属性到私钥中。

-CSP name:微软的CSP的名字。

-engine id:指定硬件引擎。

4.2 PEM-PFX(pkcs12)

假设目前拥有CA证书cacert.pem,用户证书servercert.pem,用户私钥serverkey.pem,需要生成PKCS12格式的server.pfx。

openssl pkcs12 -export -inkey serverkey.pem -in servercert.pem -certfile cacert.pem -out server.pfx

如果没有CA证书信息可添加,则不使用-certfile选项

openssl pkcs12 -inkey serverkey.pem -in servercert.pem -export -out server.pfx

4.3 PEM-DER/CER(x509)

由PEM格式证书文件servercert.pem输出DER格式文件servercert.der

openssl x509 -outform der -in servercert.pem -out servercert.der

选项:

-inform DER|PEM|NET 指定输入文件的格式。

-outform DER|PEM|NET 指定输出文件格式

-in filename 指定输入文件名

-out filename 指定输出文件名

-md2|-md5|-sha1|-mdc2 指定使用的哈希算法。缺省的是MD5于打印有关的option

-text 用文本方式详细打印出该证书的所有细节。

-noout 不打印出请求的编码版本信息。

-modulus 打印出公共密钥的系数值。没研究过RSA就别用这个了。

-serial 打印出证书的系列号。

-hash 把证书的拥有者名称的哈希值给打印出来。

-subject 打印出证书拥有者的名字。

-issuer 打印证书颁发者名字。

4.4 CER/DER-PEM(x509)

由DER格式用户证书servercert.der生成PEM格式用户证书servercert.pem

openssl x509 -inform der -in servercert.der -out servercert.pem

4.5 PEM-P7B(crl2pkcs7)

由PEM格式CA证书cacert.pem和用户证书servercert.pem,生成P7B格式用户证书servercert.p7b。

openssl crl2pkcs7 -nocrl -certfile servercert.pem -certfile cacert.pem -out servercert.p7b

选项:

-inform PEM|DER:输入文件的格式。DER是DER编码的CRL对象。PEM(默认的格式)是base64编码的CRL对象。

-outform PEM|DER:指定文件的输出格式,跟-inform的意思一样。

-in filename:指定CRL文件,不设置此项则从标准输入中获取。

-out filename:指定输出文件,不设置此项则输入到标准输出。

-certfile filename:指定证书文件,PEM格式的证书文件可以包含多个证书,此选项可以多次使用。

-nocrl:不处理crl。一般情况下,输出文件中包含crl信息,设置此选项时,读取时忽略CRL信息,生成的信息不保护CRL信息。

4.6 P7B-PEM(pkcs7)

由P7B格式用户证书servercert.p7b生成PEM格式用户证书servercert.pem

openssl pkcs7 -print_certs -in servercert.p7b -out servercert.pem

选项:

-inform PEM|DER::输入文件格式,DER或者PEM格式。DER格式采用ASN1的DER标准格式。一般用的多的都是PEM格式,就是base64编码格式。

-outform DER|PEM:输出文件格式,DER或者PEM格式。

-in filename:输入的需要处理的文件,默认为标准输入。

-out filename:输出文件,默认为标准输出。

-print:打印出pkcs7的所有信息值。

-print_certs:打印证书或CRL信息,在一行中打印出持有者和颁发者。

-text:打印证书相关信息。

-noout:不打印证书信息值。

-engine id:指定硬件引擎。-engine id:指定硬件引擎。

4.7 P7B-PFX(pkcs7-pkcs12)

先将P7B格式证书转换为PEM格式

openssl pkcs7 -print_certs -in servercert.p7b -out servercert.pem

再将PEM格式证书转换为PFX格式

openssl pkcs12 -export -in servercert.pem -inkey serverkey.pem –certfile cacert.pem -out servercert.pfx

5 扩展知识

5.1 公钥密码标准-PKCS

PKCS全称是 Public-Key Cryptography Standards (公钥密码标准),PKCS是由RSA实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议。

PKCS标准汇总





版本

名称

简介

PKCS #1

2.1

RSA密码编译标准(RSA Cryptography Standard)

定义了RSA的数理基础、公/私钥格式,以及加/解密、签/验章的流程。1.5版本曾经遭到***。

PKCS #2

-

撤销

原本是用以规范RSA加密摘要的转换方式,现已被纳入PKCS#1之中。

PKCS #3

1.4

DH金钥协议标准(Diffie-Hellman key agreement Standard)

规范以DH金钥协议为基础的金钥协议标准。其功能,可以让两方透过金议协议,拟定一把会议金钥(Session key)。

PKCS #4

-

撤销

原本用以规范转换RSA金钥的流程。已被纳入PKCS#1之中。

PKCS #5

2.0

密码基植加密标准(Password-based Encryption Standard)

参见RFC 2898与PBKDF2。

PKCS #6

1.5

证书扩展语法标准(Extended-Certificate Syntax Standard)

将原本X.509的证书格式标准加以扩充。

PKCS #7

1.5

密码讯息语法标准(Cryptographic Message Syntax Standard)

参见RFC 2315。规范了以公开密钥基础设施(PKI)所产生之签章/密文之格式。其目的一样是为了拓展数位证书的应用。其中,包含了S/MIME与CMS。

PKCS #8

1.2

私钥讯息表示标准(Private-Key Information Syntax Standard).

Apache读取证书私钥的标准。

PKCS #9

2.0

选择属性格式(Selected Attribute Types)

定义PKCS#6、7、8、10的选择属性格式。

PKCS #10

1.7

证书申请标准(Certification Request Standard)

参见RFC 2986。规范了向证书中心申请证书之CSR(certificate signing request)的格式。

PKCS #11

2.20

密码装置标准界面(Cryptographic Token Interface (Cryptoki))

定义了密码装置的应用程序界面(API)之规格。

PKCS #12

1.0

个人讯息交换标准(Personal Information Exchange Syntax Standard)

定义了包含私钥与公钥证书(public key certificate)的文件格式。私钥采密码(password)保护。常见的PFX就履行了PKCS#12。

PKCS #13

椭圆曲线密码学标准(Elliptic curve cryptography Standard)

制定中。规范以椭圆曲线密码学为基础所发展之密码技术应用。椭圆曲线密码学是新的密码学技术,其强度与效率皆比现行以指数运算为基础之密码学算法来的优秀。然而,该算法的应用尚不普及。

PKCS #14

拟乱数产生器标准(Pseudo-random Number Generation)

制定中。规范拟乱数产生器的使用与设计。

PKCS #15

1.1

密码装置讯息格式标准(Cryptographic Token Information Format Standard)

定义了密码设备内部数据的组织结构。


5.2 X.509标准

在密码学中,X.509是由ITU-T为了公开金钥基础建设(PKI)与授权管理基础建设(PMI)提出的产业标准。X.509标准,规范了公开金钥认证、证书吊销列表、授权凭证、凭证路径验证算法等。

X.509被广泛使用的数字证书标准。X.509定义了两种证书:公钥证书和属性证书,PKCS#7和PKCS#12使用的都是公钥证书。

X.509 3 版是最新的版本(1996 年)。它支持扩展的概念,因此任何人均可定义扩展并将其纳入证书中。常用的扩展包括:KeyUsage(仅限密钥用于特殊目的,例如“只签”)和 AlternativeNames(允许其它标识与该公钥关联,例如 DNS 名、电子邮件地址、IP 地址)。扩展可标记为“极重要”,以表示应选中该扩展并强制执行或使用。例如,如果某一证书将 KeyUsage 扩展标记为“极重要”,而且设置为“keyCertSign”,则在 SSL 通信期间该证书出现时将被拒绝,因为该证书扩展表示相关私钥应只用于签写证书,而不应该用于 SSL。

在X.509系统中,CA签发的证书依照X.500的管理,绑定了一个唯一甄别名(DN-Distinguished Name ),可以包含多个字段和值,还可以支持别名(Alternative Name )。

一个组织受信任的根证书会分发给所有需要用到的PKI系统的员工手上。主流浏览器:IE、Netscape/Mozilla,Opera和Safari会预先安装一部分根证书,这些根证书都是受信任的证书认证机构CA,这样他们颁发的证书,浏览器将可以直接信任。虽然用户可以删除或者禁用这些根证书,但事实上,用户很少这么做。在最新的微软平台,甚至会在用户移除了预先安置的根证书后,当用户再访问这些被删除的根证书网站的时候,会自动将这些根证书恢复到信任列表中。

X.509包含了一个证书吊销列表(CRL-Certificate Revocation List)实施的标准,这在PKI系统中经常被人所忽略。IETF提出的检查证书有效性的方法是在线证书状态(OCSP- Online Certificate Status Protocol)。

X.509 v3证书数据结构如下:

Certificate证书

Version 版本

Serial Number序列号

Algorithm ID 算法标识

Issuer 颁发者

Validity 有效期

Not Before 有效起始日期

Not After 有效终止日期

Subject 使用者

Subject Public Key Info 使用者公钥信息

Public Key Algorithm公钥算法

Subject Public Key公钥

Issuer Unique Identifier (Optional) 颁发者唯一标识

Subject Unique Identifier (Optional) 使用者唯一标识

Extensions (Optional) 扩展

……

Certificate Signature Algorithm 证书签名算法

Certificate Signature 证书签名

5.3 证书格式
5.3.1 PKCS#7

PKCS#7 是一种将数据加密和签名(正式名称是“enveloping”)的技术标准。它描述数字证书的语法和其他加密消息,尤其是数据加密和数字签名的方法,也包含了算法。

格式

PKCS7

扩展名

p7b/.p7r

描述

加密信息语法标准

特点

1、p7b以树状展示证书链,仅包含证书和CRL列表信息,不含私钥

2、p7r为CA对证书请求签名的回复,只能用于导入


5.3.2 PKCS#10

格式

PKCS10

扩展名

.p10/.csr

描述

Certificate Signing Request

特点

1、 ASCII文件

2、证书签名请求文件

3、CA签名后以p7r文件回复

5.3.3 PKCS#12

PKCS#12文件, 包含证书(公钥)和私钥(受密码保护),也可包含整个证书链。PKCS#12文件可以存放多个证书,通常用于WINDOWS IIS,也能够被当作Java Keysotre文件使用,用于Tomcat,Resign,Weblogic,Jboss等,不能被用于Apache。

在微软的CA用户证书申请模版中,没有提示用户自己创建RSA密钥对,因此用户一般会使用CA系统提供的RSA密钥对生成CSR(证书请求)文件,然后直接颁发cer证书。这也就导致了用户手中没有生成该证书的RSA私钥,从而无法形成含有私钥的p12证书。

格式

PKCS12

扩展名

.p12/.pfx

描述

个人信息交换语法标准

特点

1、包含私钥、公钥及其证书

2、密钥库和私钥用相同密码进行保护


5.3.4 PEM

格式

PEM

扩展名

.pem/.cer/.crt

描述

Printable Encoded Message

特点

1、 该编码格式在RFC1421中定义,其实PEM是【Privacy-Enhanced Mail】的简写,但他也同样广泛运用于密钥管理

2、 ASCII文件

3、 一般基于base 64编码

4、Apache用到的CA证书链就是PEM格式,它实际上可保存普通多个X509证书(.cer),  将每个证书简单加在一起就可以了

5.3.5 DER

格式

DER

扩展名

.cer/.crt/.rsa

描述

用于存放证书

特点

二进制,不含私钥

5.3.6 CMS

格式

CMS

扩展名

.p7c/.p7m/.p7s

描述

Cryptographic Message Syntax

特点

1、 p7c只保存证书

2、p7m:signature with enveloped data

3、p7s:时间戳签名文件

5.3.7 SPC

格式

SPC

扩展名

pvk/.spc

描述

Software Publishing Certificate

特点

微软公司特有的双证书文件格式,经常用于代码签名,其中

1、pvk用于保存私钥

2、spc用于保存公钥


5.4 Cipher列表

["TLS_NULL_WITH_NULL_NULL"]                        =  0x0000,

["TLS_RSA_WITH_NULL_MD5"]                          =  0x0001,

["TLS_RSA_WITH_NULL_SHA"]                          =  0x0002,

["TLS_RSA_EXPORT_WITH_RC4_40_MD5"]                 =  0x0003,

["TLS_RSA_WITH_RC4_128_MD5"]                       =  0x0004,

["TLS_RSA_WITH_RC4_128_SHA"]                       =  0x0005,

["TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5"]             =  0x0006,

["TLS_RSA_WITH_IDEA_CBC_SHA"]                      =  0x0007,

["TLS_RSA_EXPORT_WITH_DES40_CBC_SHA"]              =  0x0008,

["TLS_RSA_WITH_DES_CBC_SHA"]                       =  0x0009,

["TLS_RSA_WITH_3DES_EDE_CBC_SHA"]                  =  0x000A,

["TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA"]           =  0x000B,

["TLS_DH_DSS_WITH_DES_CBC_SHA"]                    =  0x000C,

["TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA"]               =  0x000D,

["TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA"]           =  0x000E,

["TLS_DH_RSA_WITH_DES_CBC_SHA"]                    =  0x000F,

["TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA"]               =  0x0010,

["TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA"]          =  0x0011,

["TLS_DHE_DSS_WITH_DES_CBC_SHA"]                   =  0x0012,

["TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA"]              =  0x0013,

["TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA"]          =  0x0014,

["TLS_DHE_RSA_WITH_DES_CBC_SHA"]                   =  0x0015,

["TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA"]              =  0x0016,

["TLS_DH_anon_EXPORT_WITH_RC4_40_MD5"]             =  0x0017,

["TLS_DH_anon_WITH_RC4_128_MD5"]                   =  0x0018,

["TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA"]          =  0x0019,

["TLS_DH_anon_WITH_DES_CBC_SHA"]                   =  0x001A,

["TLS_DH_anon_WITH_3DES_EDE_CBC_SHA"]              =  0x001B,

["SSL_FORTEZZA_KEA_WITH_NULL_SHA"]                 =  0x001C,

["SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA"]         =  0x001D,

["TLS_KRB5_WITH_DES_CBC_SHA-or-SSL_FORTEZZA_KEA_WITH_RC4_128_SHA"] = 0x001E, --TLS vs SSLv3

["TLS_KRB5_WITH_3DES_EDE_CBC_SHA"]                 =  0x001F,

["TLS_KRB5_WITH_RC4_128_SHA"]                      =  0x0020,

["TLS_KRB5_WITH_IDEA_CBC_SHA"]                     =  0x0021,

["TLS_KRB5_WITH_DES_CBC_MD5"]                      =  0x0022,

["TLS_KRB5_WITH_3DES_EDE_CBC_MD5"]                 =  0x0023,

["TLS_KRB5_WITH_RC4_128_MD5"]                      =  0x0024,

["TLS_KRB5_WITH_IDEA_CBC_MD5"]                     =  0x0025,

["TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA"]            =  0x0026,

["TLS_KRB5_EXPORT_WITH_RC2_CBC_40_SHA"]            =  0x0027,

["TLS_KRB5_EXPORT_WITH_RC4_40_SHA"]                =  0x0028,

["TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5"]            =  0x0029,

["TLS_KRB5_EXPORT_WITH_RC2_CBC_40_MD5"]            =  0x002A,

["TLS_KRB5_EXPORT_WITH_RC4_40_MD5"]                =  0x002B,

["TLS_PSK_WITH_NULL_SHA"]                          =  0x002C,

["TLS_DHE_PSK_WITH_NULL_SHA"]                      =  0x002D,

["TLS_RSA_PSK_WITH_NULL_SHA"]                      =  0x002E,

["TLS_RSA_WITH_AES_128_CBC_SHA"]                   =  0x002F,

["TLS_DH_DSS_WITH_AES_128_CBC_SHA"]                =  0x0030,

["TLS_DH_RSA_WITH_AES_128_CBC_SHA"]                =  0x0031,

["TLS_DHE_DSS_WITH_AES_128_CBC_SHA"]               =  0x0032,

["TLS_DHE_RSA_WITH_AES_128_CBC_SHA"]               =  0x0033,

["TLS_DH_anon_WITH_AES_128_CBC_SHA"]               =  0x0034,

["TLS_RSA_WITH_AES_256_CBC_SHA"]                   =  0x0035,

["TLS_DH_DSS_WITH_AES_256_CBC_SHA"]                =  0x0036,

["TLS_DH_RSA_WITH_AES_256_CBC_SHA"]                =  0x0037,

["TLS_DHE_DSS_WITH_AES_256_CBC_SHA"]               =  0x0038,

["TLS_DHE_RSA_WITH_AES_256_CBC_SHA"]               =  0x0039,

["TLS_DH_anon_WITH_AES_256_CBC_SHA"]               =  0x003A,

["TLS_RSA_WITH_NULL_SHA256"]                       =  0x003B,

["TLS_RSA_WITH_AES_128_CBC_SHA256"]                =  0x003C,

["TLS_RSA_WITH_AES_256_CBC_SHA256"]                =  0x003D,

["TLS_DH_DSS_WITH_AES_128_CBC_SHA256"]             =  0x003E,

["TLS_DH_RSA_WITH_AES_128_CBC_SHA256"]             =  0x003F,

["TLS_DHE_DSS_WITH_AES_128_CBC_SHA256"]            =  0x0040,

["TLS_RSA_WITH_CAMELLIA_128_CBC_SHA"]              =  0x0041,

["TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA"]           =  0x0042,

["TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA"]           =  0x0043,

["TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA"]          =  0x0044,

["TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA"]          =  0x0045,

["TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA"]          =  0x0046,

["TLS_ECDH_ECDSA_WITH_NULL_SHA-draft"]             =  0x0047,  --draft-ietf-tls-ecc-00

["TLS_ECDH_ECDSA_WITH_RC4_128_SHA-draft"]          =  0x0048,  --draft-ietf-tls-ecc-00

["TLS_ECDH_ECDSA_WITH_DES_CBC_SHA-draft"]          =  0x0049,  --draft-ietf-tls-ecc-00

["TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA-draft"]     =  0x004A,  --draft-ietf-tls-ecc-00

["TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA-draft"]      =  0x004B,  --draft-ietf-tls-ecc-00

["TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA-draft"]      =  0x004C,  --draft-ietf-tls-ecc-00

["TLS_ECDH_ECNRA_WITH_DES_CBC_SHA-draft"]          =  0x004D,  --draft-ietf-tls-ecc-00

["TLS_ECDH_ECNRA_WITH_3DES_EDE_CBC_SHA-draft"]     =  0x004E,  --draft-ietf-tls-ecc-00

["TLS_ECMQV_ECDSA_NULL_SHA-draft"]                 =  0x004F,  --draft-ietf-tls-ecc-00

["TLS_ECMQV_ECDSA_WITH_RC4_128_SHA-draft"]         =  0x0050,  --draft-ietf-tls-ecc-00

["TLS_ECMQV_ECDSA_WITH_DES_CBC_SHA-draft"]         =  0x0051,  --draft-ietf-tls-ecc-00

["TLS_ECMQV_ECDSA_WITH_3DES_EDE_CBC_SHA-draft"]    =  0x0052,  --draft-ietf-tls-ecc-00

["TLS_ECMQV_ECNRA_NULL_SHA-draft"]                 =  0x0053,  --draft-ietf-tls-ecc-00

["TLS_ECMQV_ECNRA_WITH_RC4_128_SHA-draft"]         =  0x0054,  --draft-ietf-tls-ecc-00

["TLS_ECMQV_ECNRA_WITH_DES_CBC_SHA-draft"]         =  0x0055,  --draft-ietf-tls-ecc-00

["TLS_ECMQV_ECNRA_WITH_3DES_EDE_CBC_SHA-draft"]    =  0x0056,  --draft-ietf-tls-ecc-00

["TLS_ECDH_anon_NULL_WITH_SHA-draft"]              =  0x0057,  --draft-ietf-tls-ecc-00

["TLS_ECDH_anon_WITH_RC4_128_SHA-draft"]           =  0x0058,  --draft-ietf-tls-ecc-00

["TLS_ECDH_anon_WITH_DES_CBC_SHA-draft"]           =  0x0059,  --draft-ietf-tls-ecc-00

["TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA-draft"]      =  0x005A,  --draft-ietf-tls-ecc-00

["TLS_ECDH_anon_EXPORT_WITH_DES40_CBC_SHA-draft"]  =  0x005B,  --draft-ietf-tls-ecc-00

["TLS_ECDH_anon_EXPORT_WITH_RC4_40_SHA-draft"]     =  0x005C,  --draft-ietf-tls-ecc-00

["TLS_RSA_EXPORT1024_WITH_RC4_56_MD5"]             =  0x0060,

["TLS_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5"]         =  0x0061,

["TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA"]            =  0x0062,

["TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA"]        =  0x0063,

["TLS_RSA_EXPORT1024_WITH_RC4_56_SHA"]             =  0x0064,

["TLS_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA"]         =  0x0065,

["TLS_DHE_DSS_WITH_RC4_128_SHA"]                   =  0x0066,

["TLS_DHE_RSA_WITH_AES_128_CBC_SHA256"]            =  0x0067,

["TLS_DH_DSS_WITH_AES_256_CBC_SHA256"]             =  0x0068,

["TLS_DH_RSA_WITH_AES_256_CBC_SHA256"]             =  0x0069,

["TLS_DHE_DSS_WITH_AES_256_CBC_SHA256"]            =  0x006A,

["TLS_DHE_RSA_WITH_AES_256_CBC_SHA256"]            =  0x006B,

["TLS_DH_anon_WITH_AES_128_CBC_SHA256"]            =  0x006C,

["TLS_DH_anon_WITH_AES_256_CBC_SHA256"]            =  0x006D,

["TLS_DHE_DSS_WITH_3DES_EDE_CBC_RMD"]       =  0x0072,  --draft-ietf-tls-openpgp-keys-05

["TLS_DHE_DSS_WITH_AES_128_CBC_RMD"]        =  0x0073,  --draft-ietf-tls-openpgp-keys-05

["TLS_DHE_DSS_WITH_AES_256_CBC_RMD"]        =  0x0074,  --draft-ietf-tls-openpgp-keys-05

["TLS_DHE_RSA_WITH_3DES_EDE_CBC_RMD"]       =  0x0077,  --draft-ietf-tls-openpgp-keys-05

["TLS_DHE_RSA_WITH_AES_128_CBC_RMD"]        =  0x0078,  --draft-ietf-tls-openpgp-keys-05

["TLS_DHE_RSA_WITH_AES_256_CBC_RMD"]        =  0x0079,  --draft-ietf-tls-openpgp-keys-05

["TLS_RSA_WITH_3DES_EDE_CBC_RMD"]           =  0x007C,  --draft-ietf-tls-openpgp-keys-05

["TLS_RSA_WITH_AES_128_CBC_RMD"]            =  0x007D,  --draft-ietf-tls-openpgp-keys-05

["TLS_RSA_WITH_AES_256_CBC_RMD"]            =  0x007E,  --draft-ietf-tls-openpgp-keys-05

["TLS_GOSTR341094_WITH_28147_CNT_IMIT"]     =  0x0080,  --draft-chudov-cryptopro-cptls-04

["TLS_GOSTR341001_WITH_28147_CNT_IMIT"]     =  0x0081,  --draft-chudov-cryptopro-cptls-04

["TLS_GOSTR341094_WITH_NULL_GOSTR3411"]     =  0x0082,  --draft-chudov-cryptopro-cptls-04

["TLS_GOSTR341001_WITH_NULL_GOSTR3411"]     =  0x0083,  --draft-chudov-cryptopro-cptls-04

["TLS_RSA_WITH_CAMELLIA_256_CBC_SHA"]              =  0x0084,

["TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA"]           =  0x0085,

["TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA"]           =  0x0086,

["TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA"]          =  0x0087,

["TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA"]          =  0x0088,

["TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA"]          =  0x0089,

["TLS_PSK_WITH_RC4_128_SHA"]                       =  0x008A,

["TLS_PSK_WITH_3DES_EDE_CBC_SHA"]                  =  0x008B,

["TLS_PSK_WITH_AES_128_CBC_SHA"]                   =  0x008C,

["TLS_PSK_WITH_AES_256_CBC_SHA"]                   =  0x008D,

["TLS_DHE_PSK_WITH_RC4_128_SHA"]                   =  0x008E,

["TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA"]              =  0x008F,

["TLS_DHE_PSK_WITH_AES_128_CBC_SHA"]               =  0x0090,

["TLS_DHE_PSK_WITH_AES_256_CBC_SHA"]               =  0x0091,

["TLS_RSA_PSK_WITH_RC4_128_SHA"]                   =  0x0092,

["TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA"]              =  0x0093,

["TLS_RSA_PSK_WITH_AES_128_CBC_SHA"]               =  0x0094,

["TLS_RSA_PSK_WITH_AES_256_CBC_SHA"]               =  0x0095,

["TLS_RSA_WITH_SEED_CBC_SHA"]                      =  0x0096,

["TLS_DH_DSS_WITH_SEED_CBC_SHA"]                   =  0x0097,

["TLS_DH_RSA_WITH_SEED_CBC_SHA"]                   =  0x0098,

["TLS_DHE_DSS_WITH_SEED_CBC_SHA"]                  =  0x0099,

["TLS_DHE_RSA_WITH_SEED_CBC_SHA"]                  =  0x009A,

["TLS_DH_anon_WITH_SEED_CBC_SHA"]                  =  0x009B,

["TLS_RSA_WITH_AES_128_GCM_SHA256"]                =  0x009C,

["TLS_RSA_WITH_AES_256_GCM_SHA384"]                =  0x009D,

["TLS_DHE_RSA_WITH_AES_128_GCM_SHA256"]            =  0x009E,

["TLS_DHE_RSA_WITH_AES_256_GCM_SHA384"]            =  0x009F,

["TLS_DH_RSA_WITH_AES_128_GCM_SHA256"]             =  0x00A0,

["TLS_DH_RSA_WITH_AES_256_GCM_SHA384"]             =  0x00A1,

["TLS_DHE_DSS_WITH_AES_128_GCM_SHA256"]            =  0x00A2,

["TLS_DHE_DSS_WITH_AES_256_GCM_SHA384"]            =  0x00A3,

["TLS_DH_DSS_WITH_AES_128_GCM_SHA256"]             =  0x00A4,

["TLS_DH_DSS_WITH_AES_256_GCM_SHA384"]             =  0x00A5,

["TLS_DH_anon_WITH_AES_128_GCM_SHA256"]            =  0x00A6,

["TLS_DH_anon_WITH_AES_256_GCM_SHA384"]            =  0x00A7,

["TLS_PSK_WITH_AES_128_GCM_SHA256"]                =  0x00A8,

["TLS_PSK_WITH_AES_256_GCM_SHA384"]                =  0x00A9,

["TLS_DHE_PSK_WITH_AES_128_GCM_SHA256"]            =  0x00AA,

["TLS_DHE_PSK_WITH_AES_256_GCM_SHA384"]            =  0x00AB,

["TLS_RSA_PSK_WITH_AES_128_GCM_SHA256"]            =  0x00AC,

["TLS_RSA_PSK_WITH_AES_256_GCM_SHA384"]            =  0x00AD,

["TLS_PSK_WITH_AES_128_CBC_SHA256"]                =  0x00AE,

["TLS_PSK_WITH_AES_256_CBC_SHA384"]                =  0x00AF,

["TLS_PSK_WITH_NULL_SHA256"]                       =  0x00B0,

["TLS_PSK_WITH_NULL_SHA384"]                       =  0x00B1,

["TLS_DHE_PSK_WITH_AES_128_CBC_SHA256"]            =  0x00B2,

["TLS_DHE_PSK_WITH_AES_256_CBC_SHA384"]            =  0x00B3,

["TLS_DHE_PSK_WITH_NULL_SHA256"]                   =  0x00B4,

["TLS_DHE_PSK_WITH_NULL_SHA384"]                   =  0x00B5,

["TLS_RSA_PSK_WITH_AES_128_CBC_SHA256"]            =  0x00B6,

["TLS_RSA_PSK_WITH_AES_256_CBC_SHA384"]            =  0x00B7,

["TLS_RSA_PSK_WITH_NULL_SHA256"]                   =  0x00B8,

["TLS_RSA_PSK_WITH_NULL_SHA384"]                   =  0x00B9,

["TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256"]           =  0x00BA,

["TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256"]        =  0x00BB,

["TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256"]        =  0x00BC,

["TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256"]       =  0x00BD,

["TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256"]       =  0x00BE,

["TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256"]       =  0x00BF,

["TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256"]           =  0x00C0,

["TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256"]        =  0x00C1,

["TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256"]        =  0x00C2,

["TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256"]       =  0x00C3,

["TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256"]       =  0x00C4,

["TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256"]       =  0x00C5,

["TLS_ECDH_ECDSA_WITH_NULL_SHA"]                   =  0xC001,

["TLS_ECDH_ECDSA_WITH_RC4_128_SHA"]                =  0xC002,

["TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA"]           =  0xC003,

["TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA"]            =  0xC004,

["TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA"]            =  0xC005,

["TLS_ECDHE_ECDSA_WITH_NULL_SHA"]                  =  0xC006,

["TLS_ECDHE_ECDSA_WITH_RC4_128_SHA"]               =  0xC007,

["TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA"]          =  0xC008,

["TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA"]           =  0xC009,

["TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA"]           =  0xC00A,

["TLS_ECDH_RSA_WITH_NULL_SHA"]                     =  0xC00B,

["TLS_ECDH_RSA_WITH_RC4_128_SHA"]                  =  0xC00C,

["TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA"]             =  0xC00D,

["TLS_ECDH_RSA_WITH_AES_128_CBC_SHA"]              =  0xC00E,

["TLS_ECDH_RSA_WITH_AES_256_CBC_SHA"]              =  0xC00F,

["TLS_ECDHE_RSA_WITH_NULL_SHA"]                    =  0xC010,

["TLS_ECDHE_RSA_WITH_RC4_128_SHA"]                 =  0xC011,

["TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA"]            =  0xC012,

["TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA"]             =  0xC013,

["TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA"]             =  0xC014,

["TLS_ECDH_anon_WITH_NULL_SHA"]                    =  0xC015,

["TLS_ECDH_anon_WITH_RC4_128_SHA"]                 =  0xC016,

["TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA"]            =  0xC017,

["TLS_ECDH_anon_WITH_AES_128_CBC_SHA"]             =  0xC018,

["TLS_ECDH_anon_WITH_AES_256_CBC_SHA"]             =  0xC019,

["TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA"]              =  0xC01A,

["TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA"]          =  0xC01B,

["TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA"]          =  0xC01C,

["TLS_SRP_SHA_WITH_AES_128_CBC_SHA"]               =  0xC01D,

["TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA"]           =  0xC01E,

["TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA"]           =  0xC01F,

["TLS_SRP_SHA_WITH_AES_256_CBC_SHA"]               =  0xC020,

["TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA"]           =  0xC021,

["TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA"]           =  0xC022,

["TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256"]        =  0xC023,

["TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384"]        =  0xC024,

["TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256"]         =  0xC025,

["TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384"]         =  0xC026,

["TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"]          =  0xC027,

["TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384"]          =  0xC028,

["TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256"]           =  0xC029,

["TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384"]           =  0xC02A,

["TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"]        =  0xC02B,

["TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"]        =  0xC02C,

["TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256"]         =  0xC02D,

["TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384"]         =  0xC02E,

["TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"]          =  0xC02F,

["TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"]          =  0xC030,

["TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256"]           =  0xC031,

["TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384"]           =  0xC032,

["TLS_ECDHE_PSK_WITH_RC4_128_SHA"]                 =  0xC033,

["TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA"]            =  0xC034,

["TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA"]             =  0xC035,

["TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA"]             =  0xC036,

["TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256"]          =  0xC037,

["TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384"]          =  0xC038,

["TLS_ECDHE_PSK_WITH_NULL_SHA"]                    =  0xC039,

["TLS_ECDHE_PSK_WITH_NULL_SHA256"]                 =  0xC03A,

["TLS_ECDHE_PSK_WITH_NULL_SHA384"]                 =  0xC03B,

["TLS_RSA_WITH_ARIA_128_CBC_SHA256"]               =  0xC03C,

["TLS_RSA_WITH_ARIA_256_CBC_SHA384"]               =  0xC03D,

["TLS_DH_DSS_WITH_ARIA_128_CBC_SHA256"]            =  0xC03E,

["TLS_DH_DSS_WITH_ARIA_256_CBC_SHA384"]            =  0xC03F,

["TLS_DH_RSA_WITH_ARIA_128_CBC_SHA256"]            =  0xC040,

["TLS_DH_RSA_WITH_ARIA_256_CBC_SHA384"]            =  0xC041,

["TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256"]           =  0xC042,

["TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384"]           =  0xC043,

["TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256"]           =  0xC044,

["TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384"]           =  0xC045,

["TLS_DH_anon_WITH_ARIA_128_CBC_SHA256"]           =  0xC046,

["TLS_DH_anon_WITH_ARIA_256_CBC_SHA384"]           =  0xC047,

["TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256"]       =  0xC048,

["TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384"]       =  0xC049,

["TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256"]        =  0xC04A,

["TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384"]        =  0xC04B,

["TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256"]         =  0xC04C,

["TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384"]         =  0xC04D,

["TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256"]          =  0xC04E,

["TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384"]          =  0xC04F,

["TLS_RSA_WITH_ARIA_128_GCM_SHA256"]               =  0xC050,

["TLS_RSA_WITH_ARIA_256_GCM_SHA384"]               =  0xC051,

["TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256"]           =  0xC052,

["TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384"]           =  0xC053,

["TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256"]            =  0xC054,

["TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384"]            =  0xC055,

["TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256"]           =  0xC056,

["TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384"]           =  0xC057,

["TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256"]            =  0xC058,

["TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384"]            =  0xC059,

["TLS_DH_anon_WITH_ARIA_128_GCM_SHA256"]           =  0xC05A,

["TLS_DH_anon_WITH_ARIA_256_GCM_SHA384"]           =  0xC05B,

["TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256"]       =  0xC05C,

["TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384"]       =  0xC05D,

["TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256"]        =  0xC05E,

["TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384"]        =  0xC05F,

["TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256"]         =  0xC060,

["TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384"]         =  0xC061,

["TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256"]          =  0xC062,

["TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384"]          =  0xC063,

["TLS_PSK_WITH_ARIA_128_CBC_SHA256"]               =  0xC064,

["TLS_PSK_WITH_ARIA_256_CBC_SHA384"]               =  0xC065,

["TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256"]           =  0xC066,

["TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384"]           =  0xC067,

["TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256"]           =  0xC068,

["TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384"]           =  0xC069,

["TLS_PSK_WITH_ARIA_128_GCM_SHA256"]               =  0xC06A,

["TLS_PSK_WITH_ARIA_256_GCM_SHA384"]               =  0xC06B,

["TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256"]           =  0xC06C,

["TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384"]           =  0xC06D,

["TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256"]           =  0xC06E,

["TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384"]           =  0xC06F,

["TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256"]         =  0xC070,

["TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384"]         =  0xC071,

["TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256"]   =  0xC072,

["TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384"]   =  0xC073,

["TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256"]    =  0xC074,

["TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384"]    =  0xC075,

["TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256"]     =  0xC076,

["TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384"]     =  0xC077,

["TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256"]      =  0xC078,

["TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384"]      =  0xC079,

["TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256"]           =  0xC07A,

["TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384"]           =  0xC07B,

["TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256"]       =  0xC07C,

["TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384"]       =  0xC07D,

["TLS_DH_RSA_WITH_CAMELLIA_128_GCM_SHA256"]        =  0xC07E,

["TLS_DH_RSA_WITH_CAMELLIA_256_GCM_SHA384"]        =  0xC07F,

["TLS_DHE_DSS_WITH_CAMELLIA_128_GCM_SHA256"]       =  0xC080,

["TLS_DHE_DSS_WITH_CAMELLIA_256_GCM_SHA384"]       =  0xC081,

["TLS_DH_DSS_WITH_CAMELLIA_128_GCM_SHA256"]        =  0xC082,

["TLS_DH_DSS_WITH_CAMELLIA_256_GCM_SHA384"]        =  0xC083,

["TLS_DH_anon_WITH_CAMELLIA_128_GCM_SHA256"]       =  0xC084,

["TLS_DH_anon_WITH_CAMELLIA_256_GCM_SHA384"]       =  0xC085,

["TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256"]   =  0xC086,

["TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384"]   =  0xC087,

["TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256"]    =  0xC088,

["TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384"]    =  0xC089,

["TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256"]     =  0xC08A,

["TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384"]     =  0xC08B,

["TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256"]      =  0xC08C,

["TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384"]      =  0xC08D,

["TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256"]           =  0xC08E,

["TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384"]           =  0xC08F,

["TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256"]       =  0xC090,

["TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384"]       =  0xC091,

["TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256"]       =  0xC092,

["TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384"]       =  0xC093,

["TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256"]           =  0xC094,

["TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384"]           =  0xC095,

["TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256"]       =  0xC096,

["TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384"]       =  0xC097,

["TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256"]       =  0xC098,

["TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384"]       =  0xC099,

["TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256"]     =  0xC09A,

["TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384"]     =  0xC09B,

["TLS_RSA_WITH_AES_128_CCM"]                       =  0xC09C,

["TLS_RSA_WITH_AES_256_CCM"]                       =  0xC09D,

["TLS_DHE_RSA_WITH_AES_128_CCM"]                   =  0xC09E,

["TLS_DHE_RSA_WITH_AES_256_CCM"]                   =  0xC09F,

["TLS_RSA_WITH_AES_128_CCM_8"]                     =  0xC0A0,

["TLS_RSA_WITH_AES_256_CCM_8"]                     =  0xC0A1,

["TLS_DHE_RSA_WITH_AES_128_CCM_8"]                 =  0xC0A2,

["TLS_DHE_RSA_WITH_AES_256_CCM_8"]                 =  0xC0A3,

["TLS_PSK_WITH_AES_128_CCM"]                       =  0xC0A4,

["TLS_PSK_WITH_AES_256_CCM"]                       =  0xC0A5,

["TLS_DHE_PSK_WITH_AES_128_CCM"]                   =  0xC0A6,

["TLS_DHE_PSK_WITH_AES_256_CCM"]                   =  0xC0A7,

["TLS_PSK_WITH_AES_128_CCM_8"]                     =  0xC0A8,

["TLS_PSK_WITH_AES_256_CCM_8"]                     =  0xC0A9,

["TLS_PSK_DHE_WITH_AES_128_CCM_8"]                 =  0xC0AA,

["TLS_PSK_DHE_WITH_AES_256_CCM_8"]                 =  0xC0AB,

["SSL_RSA_FIPS_WITH_DES_CBC_SHA"]                  =  0xFEFE,

["SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA"]             =  0xFEFF,

转载于:https://blog.51cto.com/leihenzhimu/1719977

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

openssl 1.0.2d安装使用教程 的相关文章

  • 网络安全现状:揭秘白帽黑客的真实收入

    前言 作为一个网络安全行业五年打工仔 今天就来看看黑客的收入和方向怎么样 一个黑客年薪是多少呢 外界普遍认为黑客是高收入群体 那么你想过黑客是怎么获得收入的吗 黑客分为白帽黑客和黑帽黑客 处于黑白两道的黑客会的技术都有些相似 但是却是对立的
  • 通过一个寒假能学会黑客技术吗?看完你就知道了

    一个寒假能成为黑客吗 资深白帽子来告诉你 如果你想的是学完去美国五角大楼内网随意溜达几圈 想顺走一点机密文件的话 劝你还是趁早放弃 但是成为一名初级黑客还是绰绰有余的 你只需要掌握好渗透测试 Web安全 数据库 搞懂web安全防护 SQL注
  • 广告竞价策略:激发广告变现潜能的关键

    在数字化时代 广告已经成为企业推广品牌 产品和服务的关键手段之一 为了最大程度地发挥广告的效果 广告竞价策略成为广告主和数字营销专业人士关注的焦点 通过巧妙运用竞价策略 广告主可以在激烈的市场竞争中脱颖而出 实现广告变现的潜能 admaoy
  • 虚拟主机操作系统 Windows、Linux

    操作系统将直接影响服务器的性能 安全性和可用性 因此确保选择合适的操作系统对于成功运行您的网站或应用程序至关重要 以下是一些考虑因素 可帮助您选择适合您需求的虚拟主机操作系统 1 熟悉度和技术支持 如何选择操作系统应该考虑您的经验水平和熟悉
  • 盘点那些年我们一起玩过的网络安全工具

    大家好 我是IT共享者 这篇文章给大家盘点那些年 我们一起玩过的网络安全工具 一 反恶意代码软件 1 Malwarebytes 这是一个检测和删除恶意的软件 包括蠕虫 后门 流氓 拨号器 间谍软件等等 快如闪电的扫描速度 具有隔离功能 并让
  • 内网穿透的应用-使用Net2FTP轻松部署本地Web网站并公网访问管理内网资源

    文章目录 1 前言 2 Net2FTP网站搭建 2 1 Net2FTP下载和安装 2 2 Net2FTP网页测试 3 cpolar内网穿透 3 1 Cpolar云端设置 3 2 Cpolar本地设置
  • 服务器集群是如何提高计算性能的?

    服务器集群是一种将多台服务器连接起来协同工作的技术 通过集群配置 可以提高计算性能 可靠性和可扩展性 以下是服务器集群如何提高计算性能的详细解释 一 并行处理能力 服务器集群的核心优势在于其并行处理能力 通过将多个服务器组成一个集群 可以将
  • 如何解读服务器的配置和架构?

    在当今数字化时代 服务器作为企业或组织的重要基础设施 其配置和架构对于保障业务的稳定运行至关重要 如何解读服务器的配置和架构 成为了一个备受关注的话题 本文将围绕服务器配置和架构的解读进行深入探讨 帮助读者更好地理解服务器的性能 扩展性和安
  • 掌握内网渗透之道,成为实战高手,看《内网渗透实战攻略》就够了

    文末送书 文末送书 今天推荐一本网络安全领域优质书籍 内网渗透实战攻略 文章目录 前言 如何阅读本书 目录 文末送书 前言 当今 网络系统面临着越来越严峻的安全挑战 在众多的安全挑战中 一种有组织 有特定目标 长时间持续的新型网络攻击日益猖
  • 基于成本和服务质量考虑的不确定性下,电动汽车充电网络基础设施需求预测和迭代优化的分层框架研究(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码 数据
  • 【CTF必看】从零开始的CTF学习路线(超详细),让你从小白进阶成大神!

    最近很多朋友在后台私信我 问应该怎么入门CTF 个人认为入门CTF之前大家应该先了解到底 什么是CTF 而你 学CTF的目的又到底是什么 其次便是最好具备相应的编程能力 若是完全不具备这些能力极有可能直接被劝退 毕竟比赛的时候动不动写个脚本
  • Jenkins流水线怎么做?

    问CHAT Jenkins流水线怎么做 CHAT回复 Jenkins流水线是一种创建 测试和部署应用程序的方法 以下是为Jenkins创建流水线的步骤 1 安装Jenkins 首先你需要在你的服务器上安装Jenkins 这个过程可能会根据你
  • WEB前端常见受攻击方式及解决办法总结

    一个网址建立后 如果不注意安全问题 就很容易被人攻击 下面讨论一下集中漏洞情况和放置攻击的方法 一 SQL注入 所谓的SQL注入 就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串 最终达到欺骗服务器执行恶意的SQL命
  • Linux终端常见用法总结

    熟悉Linux终端的基础用法和常见技巧可以极大提高运维及开发人员的工作效率 笔者结合自身学习实践 总结以下终端用法供同行交流学习 常 见 用 法 1 快捷键 1 1 Alt 在光标位置插入上一次执行命令的最后一个参数 1 2 Ctrl R
  • socket网络编程几大模型?看看CHAT是如何回复的?

    CHAT回复 网络编程中常见的有以下几种模型 1 阻塞I O模型 Blocking I O 传统的同步I O模型 一次只处理一个请求 2 非阻塞I O模型 Non blocking I O 应用程序轮询调用socket相关函数检查请求 不需
  • 网络安全(黑客)自学启蒙

    一 什么是网络安全 网络安全是一种综合性的概念 涵盖了保护计算机系统 网络基础设施和数据免受未经授权的访问 攻击 损害或盗窃的一系列措施和技术 经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 作
  • 网络安全基础知识面试题库

    1 基于路由器的攻击手段 1 1 源IP地址欺骗式攻击 入侵者从外部传输一个伪装成来自内部主机的数据包 数据包的IP是 内网的合法IP 对策 丢弃所有来自路由器外端口 却使用内部源地址的数据包 1 2 源路由攻击 入侵者让数据包循着一个不可
  • ESP10B 锁定连接器

    ESP10B 锁定连接器 ESP10B 电机新增内容包括双极型号标准 NEMA 尺寸 17 23 和 34 的步进电机现在包括输出扭矩范围从 61 盎司英寸到 1291 盎司英寸的双极型号 该电机配有带锁定连接器的尾缆 可轻松连接 每转可步
  • 服务器中E5和I9的区别是什么,如何选择合适的配置

    随着科技的进步 服务器处理器的性能在不断攀升 其中 Intel的E5和I9系列处理器在业界具有广泛的影响力 而当我们在选择服务器的时候会有各种各样的配置让我们眼花缭乱不知道该怎么去选择 下面我跟大家分享一下E5跟I9有什么区别 方便我们在选
  • 【安全-SSH】SSH安全设置

    今天发现自己的公有云服务器被攻击了 在这里插入图片描述 https img blog csdnimg cn direct cafdca04646f4b8b838400ec79ac282f png 然后查看了登录日志 如上图 ls sh va

随机推荐

  • python 图像识别男女_用机器学习来做人脸性别识别

    在传统编程中 图像识别一直是一个难点 虽然人能轻松做到 但是用逻辑来描述这个过程 并转换成程序是很难的 机器学习的出现让图像识别技术有了突破性的进展 卷积神经网络的出现 又使图像识别更上了一次层次 卷积神经网络由一个或多个卷积层和顶端的全连
  • 为了预测股票,我用TensorFlow深度学习了股市数据

    完整源码可在微信公众号 01二进制 后台回复 股市分析 获取 阅读此文前建议先阅读 找对象的过程中 我竟然理解了什么是机器学习 前言 相信大家这几天或多或少的都开始关注到股市了 虽然我还不是很懂里面的一些套路 但是从最近各个公众号的推送里面
  • 无盘服务器chkdsk *: /f)修复命令,巧用CHKDSK命令修复U盘文件或目录损坏问题

    巧用CHKDSK命令修复U盘文件或目录损坏问题 U盘是我们常用的随身移动存储工具 我们平时在使用U盘时难免会出现那么几次 直接拔出U盘 结果导致 U盘的文件或目录损坏且无法读取 U盘里的任何内容都无法打开了 有些朋友认为是磁盘出现坏道直接舍
  • 详解C语言中的stdin,stdout,stderr

    我们在写C程序时经常遇到printf fprintf perror 这些东西到底有什么作用 说到这不得不提及stdin stdout stderr 想想 我们在用C去写文件时的操作 File fp fopen 这个fp就是我们向系统申请的
  • android浏览网页,Android学习之通过Intent实现浏览网页

    大家好 在这里和大家分享我刚刚学到的知识 通过Intent打开网页 首先 打开布局文件中main xml 创建为LinearLayout布局 并且创建一个EditText和Button控件 具体代码如下 android orientatio
  • Jmockit 静态方法mock

    类中存在刷新 初始化等静态方法时 编写单元测试案例 示例 被测试类 public class MethodClass public static void refresh init
  • 智能合约编写之Solidity的设计模式

    前 言 随着区块链技术发展 越来越多的企业与个人开始将区块链与自身业务相结合 区块链所具有的独特优势 例如 数据公开透明 不可篡改 可以为业务带来便利 但与此同时 也存在一些隐患 数据的公开透明 意味着任何人都可以读取 不可篡改 意味着信息
  • 【新手向】如何在npm上发布属于自己的包

    课程内容来自黑马程序员的网课 供博主自己检索知识和复习用 当然如果能帮助到你就更好了 作为一个程序员 你一定下载过各式各样的包来自己的项目实现更多功能 但是如何自己发布包呢 建立属于自己的包 第一步 你需要建立一个包 建立包很简单 只要满足
  • 数据科学与大数据分析之项目2-聚类

    聚类 项目介绍 项目开始 项目介绍 文件TreeDB csv包含258个树种的描述 数据由XX市议会开放空间和环境服务部管理处提供 已提供数据集作为公共空间最佳树木选择合作项目的一部分 假设你是该项目团队的一员 进一步假设你决定参与聚类分析
  • java image 透明_Java 生成半透明照片

    在许多实际运用中 我们常常需要将一张照片 图片 装换成半透明后再显示或保存 下面我们就来看看如何使用Java来生成 转换一张照片到半透明 1 基本思路 1 打开一张图片 BufferedImage imageOpen ImageIO rea
  • php密码输入密码,php打开页面输入密码的代码

    直接复制以下代码到模板 文件或者PHP文件 当打开页面时就得输入密码 写模板内容页时候也可以试用 把密码部分当做变量对应后台写入即可 更多功能自己想象
  • ubuntu下 jupyter登录上了 新建python3连接失败

    近期在使用anaconda jupyter的时候发现自己在新建jupyter文件的时候一直报连接错误 所以为了解决此问题做了如下两种方法 第一步 pip uninstall tornado pip install tornado 5 1 1
  • (四)Vue和React的编码方式对比----样式处理及样式污染

    经过3篇文章后我们可以编写一些简单的HTML结构并渲染只页面 可是前端重要的是什么 是样式 前端是给用户看的 所以样式处理也是很重要的一件事 如果一个前端静态效果都写不好 那多丢人 所以本篇介绍一下React和Vue的样式处理方式 以及一个
  • JS —— js中的节流与防抖

    文章目录 前言 一 节流 1 什么是节流 2 做节流可解决什么问题 3 如何做节流 二 防抖 1 什么是防抖 2 做防抖可解决什么问题 3 如何做防抖 总结 前言 最近有同学问到节流与防抖的相关知识点 于是乎 四处查资料 找一找 看一看 终
  • vuepress项目部署出现样式丢失,图片加载失败的问题

    之前在尝试部署vuepress项目时 出现了样式丢失 图片加载失败的问题 具体情况请继续往下看 本地测试 完全正常 在本地测试时的样式都是正常显示的 GitHub部署 样式丢失 打包部署到GitHub上时 布局和样式就完全乱了 同时还有一堆
  • 10、docker 安装 tomcat

    一 docker 环境下安装中间件总体步骤 搜索镜像 拉取镜像 查看镜像 启动镜像 服务端口映射 但其实 docker run 的时候 就会帮我们去配置的 registry 拉取镜像了 也就是 搜索镜像 这一步 其实是可有可无的 二 安装
  • Form 表单内有多个元素的使用方式

    产品中常有的一个需求 输入框后面有描述文案或其他组件 我们可能这样写
  • Java进阶:用案例源码解析EventLoopGroup,面试真题解析

    一 前言 有句话 正因为你优秀 所以难以卓越 刚开始听这句话还在上学 既不卓越 也不优秀 甚至可能还有点笨 但突然从某次爬到班级的前几名后 开始喜欢上了这种感觉 原来前面的风景是如此灿烂 优秀和卓越差的不是一个等级 当你感觉自己优秀后 还能
  • 6-机器学习启蒙- 深度学习: 图像搜索

    6 深度学习 图像搜索 github https github com mtianyan graphLabStartedML 深度学习 图像搜索 基于图片的相似度来选购商品 可视化商品推荐 我想买双新鞋 但是 mark 符合我的风格 我又感
  • openssl 1.0.2d安装使用教程

    本文简要介绍CA和证书的基础知识 并演示openssl 1 0 2d的安装 CA证书生成 用户证书申请 使用CA签发用户证书等内容 另外 可以参考本人的其他文章如nginx教程 进行生成证书的验证 By 泪痕之木 实验环境 操作系统 Cen