Initial commit

This commit is contained in:
LittleGirl 2021-10-19 09:38:43 +08:00
parent 1bb3de071d
commit 9a23377bd9
66 changed files with 2007 additions and 2 deletions

185
README.md
View File

@ -1,3 +1,184 @@
# SSL_network_communication_C
# 基于C++和OpenSSL实现的SSL网络通信
基于C++和OpenSSL实现的SSL网络通信
# 一、实验内容
- 安装openSSL
- 编写一个服务器的程序服务器端的功能是建立SSL网络服务接受客户端的SSL连接收发SSL消息
- 编写一个客户端的程序客户端的功能是通过SSL协议连接服务器收发SSL消息
- 生成SSL证书
- 撰写试验报告包括了服务器端和客户端运行结果截图以及生成的SSL证书
# 二、实验框架
程序分为两部分客户端和服务器端我们的目的是利用SSL/TLS的特性保证通信双方能够互相验证对方身份(真实性),并保证数据的完整性, 私密性。
**服务器认证阶段**
- 客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接
- 服务器根据客户的信息确定是否需要生成新的主密钥如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息
- 客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器
- 服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器
**用户认证阶段**
在此之前,服务器已经通过了客户认证,这一阶段主要完成对客户的认证。经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。
**流程图**如下:
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/91536e8a1ed1c2161e3d4566784b8c22.writebug)
**客户端以及服务器端的框架**如下:
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/8a82d7cf04d86f65c48a972465663805.writebug)
# 三、实验步骤
## 3.1 安装openSSL
下载openSSL的exe文件在 https://slproweb.com/products/Win32OpenSSL.html 网站上下载合适的安装包。
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/d2e16063de98e880660848199f2668c9.writebug)
下载完后打开安装选择安装位置64位和32位不要安装在同一个目录下。
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/60d79157a51630bea9e3399709d0e11e.writebug)
选择把dll复制到OpenSSL目录下。
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/a287cd5c6f29420e942270acadeb5520.writebug)
安装完成后如果有捐款意向的可以捐款没有意向则取消掉钩然后点“Finish” 。
## 3.2 VS2017搭建openssl环境
新建空项目然后配置项目属性包含目录添加进openssl的include文件夹库目录添加openssl的lib文件夹
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/5a82e8ea9ccb0e4f45848ecba9565fdf.writebug)
将OpenSSL安装目录下bin文件夹中的“libeay32.dll”和“ssleay32.dll”名字后面的版本号可能因更新而不同复制到工程目录下。
## 3.3 生成证书
首先要生成服务器端的私钥key文件
```
openssl genrsa -des3 -out server.key 1024
```
运行时会提示输入密码,此密码用于加密key文件参数des3便是指加密算法,当然也可以选用其他你认为安全的算法以后每当需读取此文件通过openssl提供的命令或API都需输入口令。如果觉得不方便也可以去除这个口令但一定要采取其他的保护措施
去除key文件口令的命令
```
openssl rsa -in server.key -out server.key
```
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/7e89c8a149ab42cca20bd4fb85cc811e.writebug)
```
openssl req -new -key server.key -out server.csr
```
生成Certificate Signing RequestCSR生成的csr文件交给CA签名后形成服务端自己的证书。屏幕上将有提示依照其指示一步一步输入要 求的个人信息即可。
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/78b1ae83e17292f6a7775ef7a32288af.writebug)
对客户端也作同样的命令生成key及csr文件。
```
openssl genrsa -des3 -out client.key 1024
openssl req -new -key client.key -out client.csr
```
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/9648b2eef0aedb73aeda55f9be083477.writebug)
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/1ce80a4e6df4214f158c6719456a5115.writebug)
首先生成CA的key文件再生成CA自签名的证书。
首先生成CA的key文件
```
openssl genrsa-des3 -out ca.key 1024
```
再生成CA自签名的证书
```
openssl req -new -x509 -key ca.key -out ca.crt
```
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/08869dac90aca0470fb0d5a7cb7779f4.writebug)
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/5462fc40a7d6117d3f39842aafb140d4.writebug)
用生成的CA的证书为刚才生成的server.csrclient.csr文件签名。
openssl中还附带了一个叫CA.pl的文件可用其生成文件。
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/27c317c778da306bfe2a38c587ead204.writebug)
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/c5cdb803f4a25407f5dbc886c74f6564.writebug)
## 3.4 服务器和客户端程序编写
### 3.4.1 客户端编写框架
```c++
/*生成一个SSL结构*/
meth = SSLv23_client_method();
ctx = SSL_CTX_new (meth);
ssl = SSL_new(ctx);
/*下面是正常的socket过程*/
fd = socket();
connect();
/*把建立好的socket和SSL结构联系起来*/
SSL_set_fd(ssl,fd);
/*SSL的握手过程*/
SSL_connect(ssl);
/*接下来用SSL_write(), SSL_read()代替原有的write(),read()即可*/
SSL_write(ssl,"我是客户端",strlen("我是客户端"));
```
### 3.4.2 服务器编写框架
```c++
/*生成一个SSL结构*/
meth = SSLv23_server_method();
ctx = SSL_CTX_new (meth);
ssl = SSL_new(ctx);
/*下面是正常的socket过程*/
fd = socket();
bind();
listen();
accept();
/*把建立好的socket和SSL结构联系起来*/
SSL_set_fd(ssl,fd);
/*SSL的握手过程*/
SSL_connect(ssl);
/*接下来用SSL_write(), SSL_read()代替原有的write(),read()即可*/
SSL_read (ssl, buf, sizeof(buf));
```
# 四、实验结果截图
服务器server运行截图和客户端client1运行截图证书信息也在截图中。
经过三次握手,数据交互,服务器收到了客户端传来的“我是客户端消息”,客户端收到了服务器传来的“服务器收到了”数据。
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/6f761e6ec780ef85086c8f362dae5830.writebug)

Binary file not shown.

12
src/SSL作业.txt Normal file
View File

@ -0,0 +1,12 @@
1.安装openSSL
2.编写一个服务器的程序服务器端的功能是建立SSL网络服务接受客户端的SSL连接收发SSL消息。
3.编写一个客户端的程序客户端的功能是通过SSL协议连接服务器收发SSL消息。
4.生成SSL证书。
4.撰写试验报告包括了服务器端和客户端运行结果截图以及生成的SSL证书。
SSL编程资料参考
SSL编程http://www.docin.com/p-620829020.html
openSSL编程示范http://www.cnblogs.com/274914765qq/p/4613007.html
Windows下openSSL安装http://blog.chinaunix.net/uid-12707183-id-2919174.html
SSL in WinHTTPhttps://msdn.microsoft.com/en-us/library/windows/desktop/aa384076(v=vs.85).aspx
用OpenSSL编写SSLTLS程序http://blog.csdn.net/liangyuannao/article/details/7779342

View File

@ -0,0 +1,16 @@
-----BEGIN CERTIFICATE-----
MIICkjCCAfugAwIBAgIJAPWIDUMbQM2+MA0GCSqGSIb3DQEBCwUAMGIxCzAJBgNV
BAYTAmNuMQswCQYDVQQIDAJzaDELMAkGA1UEBwwCc2gxDDAKBgNVBAoMA3RqdTEL
MAkGA1UECwwCY3MxCzAJBgNVBAMMAmNzMREwDwYJKoZIhvcNAQkBFgJjczAeFw0x
ODAxMTQwNTM5MTBaFw0xODAyMTMwNTM5MTBaMGIxCzAJBgNVBAYTAmNuMQswCQYD
VQQIDAJzaDELMAkGA1UEBwwCc2gxDDAKBgNVBAoMA3RqdTELMAkGA1UECwwCY3Mx
CzAJBgNVBAMMAmNzMREwDwYJKoZIhvcNAQkBFgJjczCBnzANBgkqhkiG9w0BAQEF
AAOBjQAwgYkCgYEArpLmatttOh2wCdpE2hhMNT0RJe1rMLORQvxv0uzEzf2FoVW4
hAmyKd72l0D/+Rm6KF++mDrPIXv+11GqeY4VmKntj357dKhauH3eg6zMDrD+WqWH
S3rYVGcAOhGHD4eSR7vqGPQEgKrt4C6m4w7R1G5sG1YfijDIHTCae1qRRjECAwEA
AaNQME4wHQYDVR0OBBYEFKr1BnenPT8zbJA7FyKjF4VsgzYoMB8GA1UdIwQYMBaA
FKr1BnenPT8zbJA7FyKjF4VsgzYoMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEL
BQADgYEAUPNBc/jLlYSQylxpC/w57QN3hqlayZnAI2zW190p3xfsww2NthoytqCc
mV+8HC+8fapduWkvmgb9Yahu1EXE0OIFGYaDYxDtFenfenMRjsl4B/MUJV+3Orhc
gKCfOuwhqF4IHLaYxMDwRPC6Fqeua+HJ1wmxQa2ThJqGdAxVSyE=
-----END CERTIFICATE-----

View File

@ -0,0 +1,18 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,AB0090DD0503C739
z1l13UqVX+Id2g66PWNYK1VJwh2zojreF6Tv2NqPUH7Utq8s03eRkPLf4AleKObc
GDrfvoYgf5fwGap7hxblV6sAy5Da1dhnz/AfhKScQeORpqfORnvz6XVvAVukYx4P
u/R1QhWdf+I35spECDUU2qRmD/y7EC4C0umjrYqfZROe0zWtDBu7BzO4/G8QZUSG
RGLTFVST8y2ufTRNiWoUQo/2+qmZG942esPqcUYRQDtJyki4IRFXXwlQXXbCqQZi
sdYKlU3ZaZtqjsT3d7nVqKyCIn6OitLqAdan8ZaGXG+IEzTbCRNh07nE4JVtg15h
M+AjbsXFKd6dRu8YTESYC4IRf6cRpOjhAOz6YcQ+8GbWMUGT8QIzkYt7bkdEkaDs
WiVi/AivDMh2nmCQnvdb6wcYJhMxa2A2NUJXjUdIgoEpznjXQDDVaChh9UOXlLAo
KgkectmvmJgmuerpmRMPiLsVbcVRJJmbIvy1TCt7RW5xffSoXqp+0kr1LCWfUTgC
c8S30aRW5ZbeHPcsLeFe/DUwue5qFRP3K2y40aMSM3rB6VtMBypy4ehNq1P92tNg
S23sg96kaFvS+fmEDAzDtQlk8RrQx4DpRToCCkznidg/eYKmqY7uONWopmUGiXeg
wuGaZS7UkXic8/GR+5O0lNzCZep6Vlp323e9FgnV05qNopg+XDatIzEZbEYBo4Qo
BMJP1LUpPEt4sEPnrPTVgiIvVDgrAefbAAivzeIfCJcq7Ssa5BAjrraDYwtNUGwk
AJ0LF8XV50CsJftOLWV+duUuM/T73YseOl186xvvvxo=
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,60 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 2 (0x2)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=cn, ST=sh, L=sh, O=tju, OU=cs, CN=cs/emailAddress=cs
Validity
Not Before: Jan 14 06:00:33 2018 GMT
Not After : Jan 14 06:00:33 2019 GMT
Subject: C=cn, ST=sh, O=tju, OU=cs, CN=air/emailAddress=ds
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
00:bd:a9:a8:43:73:d8:9f:4b:3a:56:c2:b7:f5:fe:
08:f7:ee:7b:08:c8:f6:61:c3:90:f0:4a:95:e9:a6:
b6:bd:60:9d:e6:3e:57:ef:50:d8:c6:bf:34:b7:ae:
5f:72:1c:2c:77:d8:9c:81:df:5e:71:65:b6:3b:c1:
2a:d2:d7:0a:3c:1a:33:44:a4:97:ad:b7:48:4c:8d:
46:ea:63:c7:50:ac:df:d3:22:df:ac:7e:25:06:f0:
2c:0b:76:89:eb:c6:a1:e4:f5:34:eb:73:9f:a5:73:
e5:75:32:5e:88:d1:98:16:4b:39:99:dc:74:75:47:
3c:47:5c:71:9f:b8:17:fa:b9
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
AF:74:40:0B:46:07:B4:ED:E5:34:FA:8F:63:CC:11:CB:4C:B8:69:8C
X509v3 Authority Key Identifier:
keyid:AA:F5:06:77:A7:3D:3F:33:6C:90:3B:17:22:A3:17:85:6C:83:36:28
Signature Algorithm: sha256WithRSAEncryption
92:f0:e8:4d:13:39:d7:c2:02:6b:7c:f4:72:4e:77:fb:9f:5a:
33:87:18:24:6e:43:f0:91:23:0e:f5:ec:1e:ce:7c:4c:d4:aa:
db:6c:43:1a:42:52:33:c5:2b:7f:fe:1e:41:0f:82:30:24:d6:
2c:0c:73:1c:ac:a4:96:46:8e:b1:14:c7:6b:d6:a5:f5:dd:8a:
75:e7:6e:f1:10:3d:55:1a:d7:d2:2d:9e:eb:18:bb:49:83:65:
80:20:98:d3:85:d7:c6:74:fa:7a:9b:20:6a:f4:c3:ca:81:5b:
c6:ef:31:d3:65:ac:b7:43:9d:22:cf:77:69:79:fc:be:2d:eb:
00:61
-----BEGIN CERTIFICATE-----
MIICqTCCAhKgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBiMQswCQYDVQQGEwJjbjEL
MAkGA1UECAwCc2gxCzAJBgNVBAcMAnNoMQwwCgYDVQQKDAN0anUxCzAJBgNVBAsM
AmNzMQswCQYDVQQDDAJjczERMA8GCSqGSIb3DQEJARYCY3MwHhcNMTgwMTE0MDYw
MDMzWhcNMTkwMTE0MDYwMDMzWjBWMQswCQYDVQQGEwJjbjELMAkGA1UECAwCc2gx
DDAKBgNVBAoMA3RqdTELMAkGA1UECwwCY3MxDDAKBgNVBAMMA2FpcjERMA8GCSqG
SIb3DQEJARYCZHMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAL2pqENz2J9L
OlbCt/X+CPfuewjI9mHDkPBKlemmtr1gneY+V+9Q2Ma/NLeuX3IcLHfYnIHfXnFl
tjvBKtLXCjwaM0Skl623SEyNRupjx1Cs39Mi36x+JQbwLAt2ievGoeT1NOtzn6Vz
5XUyXojRmBZLOZncdHVHPEdccZ+4F/q5AgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJ
YIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1Ud
DgQWBBSvdEALRge07eU0+o9jzBHLTLhpjDAfBgNVHSMEGDAWgBSq9QZ3pz0/M2yQ
OxcioxeFbIM2KDANBgkqhkiG9w0BAQsFAAOBgQCS8OhNEznXwgJrfPRyTnf7n1oz
hxgkbkPwkSMO9eweznxM1KrbbEMaQlIzxSt//h5BD4IwJNYsDHMcrKSWRo6xFMdr
1qX13Yp1527xED1VGtfSLZ7rGLtJg2WAIJjThdfGdPp6myBq9MPKgVvG7zHTZay3
Q50iz3dpefy+LesAYQ==
-----END CERTIFICATE-----

View File

@ -0,0 +1,12 @@
-----BEGIN CERTIFICATE REQUEST-----
MIIBzDCCATUCAQAwYzELMAkGA1UEBhMCY24xCzAJBgNVBAgMAnNoMQswCQYDVQQH
DAJzaDEMMAoGA1UECgwDdGp1MQswCQYDVQQLDAJjczEMMAoGA1UEAwwDYWlyMREw
DwYJKoZIhvcNAQkBFgJkczCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvamo
Q3PYn0s6VsK39f4I9+57CMj2YcOQ8EqV6aa2vWCd5j5X71DYxr80t65fchwsd9ic
gd9ecWW2O8Eq0tcKPBozRKSXrbdITI1G6mPHUKzf0yLfrH4lBvAsC3aJ68ah5PU0
63OfpXPldTJeiNGYFks5mdx0dUc8R1xxn7gX+rkCAwEAAaApMBEGCSqGSIb3DQEJ
AjEEDAJjczAUBgkqhkiG9w0BCQcxBwwFaGVsbG8wDQYJKoZIhvcNAQELBQADgYEA
pzuTcnYvs1IIs+IfcbxddKKZW8naWQXkZ79oKmwA9o7QPjBisUa+E9eeS2JJy6f2
gSkSExACCnhRnupHTy1AKy/j3K5Ha/8vDz3277dCYm6ni8Ek4lwl0jMxMePxj78C
Jve567Z0sQXRwBpdcvhneaydUPGrHaqJ3CFCGQrWm9M=
-----END CERTIFICATE REQUEST-----

View File

@ -0,0 +1,18 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,68D4DDEA1021F3F8
mXgZPQs5Y9UX2Ir01Fs3QU9d52bhq9hGgp+ybXEoI0oPgIqMmhvZn3211uLkds1+
JXZs+PzF1gaZUH76lbpuF7ICg+zkd3TBbGjYDvMQJCrRqI3fiPNPk0jTA8eC6SKJ
ou0h57vJx+DaJ/tIVWBBfSI/Vg4MVSOseJ2kxAQH6vmoR5T8voA+URDA35902fOL
rZr4YtPYCFzfZm+eZ7ZAmxRfcQL2lXO0vOx23N6qwqePCjt9IxqPESQVd2l5q5j7
BbGKelqKEt2KqpgE8w7h8qK+ScWVA6JsUlWVS7r+hSj7S2mWgtvcIVuXHJDiKY2j
5ubCrGNl4aeiMRbotxks12FTVGAaG/IKmwzz2eP7ed1gnc5WqjYUORHS2vE+Ym6J
2Sgq1fMSHTuGZKXvF3LcmeswGoSYG+blyMUDY0P7bOQQpkMEkXqWy+Cf63NX8VjI
Y4Omqvvuvj0ZhGt8S6VhkL3qGupGWkVC/AUd4p8y9jZ2zvZUVYTbhNGnckvWZ4pG
gBAvZbSt5fCjPOfGwrgacR7GwAgMqo213jAz0xwVuKyHnyH8fW2TtBiQY/sTq8Mx
5FHKSHdciv5OrCCT1SWPASFzjIYdybpGZkSDgNDcVF/p9MjGSXXDcwtFrWDChrHX
bR/TUak88rLbnEDjgHGMmnZwUEZuAwy6JyWBLKwC+xGKGY8oQAjJJPSp4EHAoQq+
mYOXwB7iEr/fMDSi/Fs1kzsTCG5EFQNANgqKnW5WaMjlWG9BVHZ0qGLCLQscb0j8
wwx+E0xEBHGQgQoEx/uv/O7DO4OTSx8RkOrGHon5HPq1OhhIRZFLmg==
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,31 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27004.2005
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "client1", "client1\client1.vcxproj", "{635A0B2F-AED9-488A-A42B-9340C22C988C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{635A0B2F-AED9-488A-A42B-9340C22C988C}.Debug|x64.ActiveCfg = Debug|x64
{635A0B2F-AED9-488A-A42B-9340C22C988C}.Debug|x64.Build.0 = Debug|x64
{635A0B2F-AED9-488A-A42B-9340C22C988C}.Debug|x86.ActiveCfg = Debug|Win32
{635A0B2F-AED9-488A-A42B-9340C22C988C}.Debug|x86.Build.0 = Debug|Win32
{635A0B2F-AED9-488A-A42B-9340C22C988C}.Release|x64.ActiveCfg = Release|x64
{635A0B2F-AED9-488A-A42B-9340C22C988C}.Release|x64.Build.0 = Release|x64
{635A0B2F-AED9-488A-A42B-9340C22C988C}.Release|x86.ActiveCfg = Release|Win32
{635A0B2F-AED9-488A-A42B-9340C22C988C}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {3AB4BC90-0F75-48AE-A9B3-CB37859CEE66}
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,16 @@
-----BEGIN CERTIFICATE-----
MIICkjCCAfugAwIBAgIJAPWIDUMbQM2+MA0GCSqGSIb3DQEBCwUAMGIxCzAJBgNV
BAYTAmNuMQswCQYDVQQIDAJzaDELMAkGA1UEBwwCc2gxDDAKBgNVBAoMA3RqdTEL
MAkGA1UECwwCY3MxCzAJBgNVBAMMAmNzMREwDwYJKoZIhvcNAQkBFgJjczAeFw0x
ODAxMTQwNTM5MTBaFw0xODAyMTMwNTM5MTBaMGIxCzAJBgNVBAYTAmNuMQswCQYD
VQQIDAJzaDELMAkGA1UEBwwCc2gxDDAKBgNVBAoMA3RqdTELMAkGA1UECwwCY3Mx
CzAJBgNVBAMMAmNzMREwDwYJKoZIhvcNAQkBFgJjczCBnzANBgkqhkiG9w0BAQEF
AAOBjQAwgYkCgYEArpLmatttOh2wCdpE2hhMNT0RJe1rMLORQvxv0uzEzf2FoVW4
hAmyKd72l0D/+Rm6KF++mDrPIXv+11GqeY4VmKntj357dKhauH3eg6zMDrD+WqWH
S3rYVGcAOhGHD4eSR7vqGPQEgKrt4C6m4w7R1G5sG1YfijDIHTCae1qRRjECAwEA
AaNQME4wHQYDVR0OBBYEFKr1BnenPT8zbJA7FyKjF4VsgzYoMB8GA1UdIwQYMBaA
FKr1BnenPT8zbJA7FyKjF4VsgzYoMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEL
BQADgYEAUPNBc/jLlYSQylxpC/w57QN3hqlayZnAI2zW190p3xfsww2NthoytqCc
mV+8HC+8fapduWkvmgb9Yahu1EXE0OIFGYaDYxDtFenfenMRjsl4B/MUJV+3Orhc
gKCfOuwhqF4IHLaYxMDwRPC6Fqeua+HJ1wmxQa2ThJqGdAxVSyE=
-----END CERTIFICATE-----

View File

@ -0,0 +1,18 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,AB0090DD0503C739
z1l13UqVX+Id2g66PWNYK1VJwh2zojreF6Tv2NqPUH7Utq8s03eRkPLf4AleKObc
GDrfvoYgf5fwGap7hxblV6sAy5Da1dhnz/AfhKScQeORpqfORnvz6XVvAVukYx4P
u/R1QhWdf+I35spECDUU2qRmD/y7EC4C0umjrYqfZROe0zWtDBu7BzO4/G8QZUSG
RGLTFVST8y2ufTRNiWoUQo/2+qmZG942esPqcUYRQDtJyki4IRFXXwlQXXbCqQZi
sdYKlU3ZaZtqjsT3d7nVqKyCIn6OitLqAdan8ZaGXG+IEzTbCRNh07nE4JVtg15h
M+AjbsXFKd6dRu8YTESYC4IRf6cRpOjhAOz6YcQ+8GbWMUGT8QIzkYt7bkdEkaDs
WiVi/AivDMh2nmCQnvdb6wcYJhMxa2A2NUJXjUdIgoEpznjXQDDVaChh9UOXlLAo
KgkectmvmJgmuerpmRMPiLsVbcVRJJmbIvy1TCt7RW5xffSoXqp+0kr1LCWfUTgC
c8S30aRW5ZbeHPcsLeFe/DUwue5qFRP3K2y40aMSM3rB6VtMBypy4ehNq1P92tNg
S23sg96kaFvS+fmEDAzDtQlk8RrQx4DpRToCCkznidg/eYKmqY7uONWopmUGiXeg
wuGaZS7UkXic8/GR+5O0lNzCZep6Vlp323e9FgnV05qNopg+XDatIzEZbEYBo4Qo
BMJP1LUpPEt4sEPnrPTVgiIvVDgrAefbAAivzeIfCJcq7Ssa5BAjrraDYwtNUGwk
AJ0LF8XV50CsJftOLWV+duUuM/T73YseOl186xvvvxo=
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,143 @@
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <errno.h>
#include <sys/types.h>
#include <winsock2.h>
#include "openssl/rsa.h"
#include "openssl/crypto.h"
#include "openssl/x509.h"
#include "openssl/pem.h"
#include "openssl/ssl.h"
#include "openssl/err.h"
#include "openssl/rand.h"
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"libeay32.lib")
#pragma comment(lib,"ssleay32.lib")
#define CERTF "client.crt" /*客户端的证书(需经CA签名)*/
#define KEYF "client.key" /*客户端的私钥(建议加密存储)*/
#define CACERT "ca.crt" /*CA 的证书*/
#define PORT 1111 /*服务端的端口*/
#define SERVER_ADDR "127.0.0.1" /*服务段的IP地址*/
#define CHK_NULL(x) if ((x)==NULL) exit (-1)
#define CHK_ERR(err,s) if ((err)==-1) { perror(s); exit(-2); }
#define CHK_SSL(err) if ((err)==-1) { ERR_print_errors_fp(stderr); exit(-3); }
int main()
{
int err;
int sd;
struct sockaddr_in sa;
SSL_CTX* ctx;
SSL* ssl;
X509* server_cert;
char buf[4096];
char* str;
const SSL_METHOD *meth;
int seed_int[100]; /*存放随机序列*/
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
printf("WSAStartup()fail:%d\n", GetLastError());
return -1;
}
OpenSSL_add_ssl_algorithms(); /*初始化*/
SSL_load_error_strings(); /*为打印调试信息作准备*/
meth = TLSv1_client_method(); /*采用什么协议(SSLv2/SSLv3/TLSv1)在此指定*/
ctx = SSL_CTX_new(meth);
CHK_NULL(ctx);
SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, NULL); /*验证与否*/
SSL_CTX_load_verify_locations(ctx, CACERT, NULL); /*若验证,则放置CA证书*/
if (SSL_CTX_use_certificate_file(ctx, CERTF, SSL_FILETYPE_PEM) <= 0) {
ERR_print_errors_fp(stderr);
exit(-2);
}
if (SSL_CTX_use_PrivateKey_file(ctx, KEYF, SSL_FILETYPE_PEM) <= 0) {
ERR_print_errors_fp(stderr);
exit(-3);
}
if (!SSL_CTX_check_private_key(ctx)) {
printf("Private key does not match the certificate public key\n");
exit(-4);
}
/*构建随机数生成机制,WIN32平台必需*/
srand((unsigned)time(NULL));
for (int i = 0; i < 100; i++)
seed_int[i] = rand();
RAND_seed(seed_int, sizeof(seed_int));
/*以下是正常的TCP socket建立过程 .............................. */
printf("Begin tcp socket...\n");
sd = socket(AF_INET, SOCK_STREAM, 0); CHK_ERR(sd, "socket");
memset(&sa, '\0', sizeof(sa));
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = inet_addr(SERVER_ADDR); /* Server IP */
sa.sin_port = htons(PORT); /* Server Port number */
err = connect(sd, (struct sockaddr*) &sa,
sizeof(sa));
CHK_ERR(err, "connect");
/* TCP 链接已建立.开始 SSL 握手过程.......................... */
printf("Begin SSL negotiation \n");
ssl = SSL_new(ctx);
CHK_NULL(ssl);
SSL_set_fd(ssl, sd);
err = SSL_connect(ssl);
CHK_SSL(err);
/*打印所有加密算法的信息(可选)*/
printf("SSL connection using %s\n", SSL_get_cipher(ssl));
/*得到服务端的证书并打印些信息(可选) */
server_cert = SSL_get_peer_certificate(ssl);
CHK_NULL(server_cert);
printf("服务器证书是:\n");
str = X509_NAME_oneline(X509_get_subject_name(server_cert), 0, 0);
CHK_NULL(str);
printf("\t subject: %s\n", str);
//free(str);
str = X509_NAME_oneline(X509_get_issuer_name(server_cert), 0, 0);
if (str == NULL)
printf("issuer null");
CHK_NULL(str);
printf("\t issuer: %s\n", str);
//free(str);
X509_free(server_cert); /*如不再需要,需将证书释放 */
/* 数据交换开始,用SSL_write,SSL_read代替write,read */
printf("Begin SSL data exchange\n");
err = SSL_write(ssl, "我是客户端", strlen("我是客户端"));
CHK_SSL(err);
err = SSL_read(ssl, buf, sizeof(buf) - 1);
CHK_SSL(err);
buf[err] = '\0';
printf("Got %d chars:'%s'\n", err, buf);
SSL_shutdown(ssl); /* send SSL/TLS close_notify */
/* 收尾工作 */
shutdown(sd, 2);
SSL_free(ssl);
SSL_CTX_free(ctx);
system("pause");
return 0;
}

View File

@ -0,0 +1,60 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 2 (0x2)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=cn, ST=sh, L=sh, O=tju, OU=cs, CN=cs/emailAddress=cs
Validity
Not Before: Jan 14 06:00:33 2018 GMT
Not After : Jan 14 06:00:33 2019 GMT
Subject: C=cn, ST=sh, O=tju, OU=cs, CN=air/emailAddress=ds
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
00:bd:a9:a8:43:73:d8:9f:4b:3a:56:c2:b7:f5:fe:
08:f7:ee:7b:08:c8:f6:61:c3:90:f0:4a:95:e9:a6:
b6:bd:60:9d:e6:3e:57:ef:50:d8:c6:bf:34:b7:ae:
5f:72:1c:2c:77:d8:9c:81:df:5e:71:65:b6:3b:c1:
2a:d2:d7:0a:3c:1a:33:44:a4:97:ad:b7:48:4c:8d:
46:ea:63:c7:50:ac:df:d3:22:df:ac:7e:25:06:f0:
2c:0b:76:89:eb:c6:a1:e4:f5:34:eb:73:9f:a5:73:
e5:75:32:5e:88:d1:98:16:4b:39:99:dc:74:75:47:
3c:47:5c:71:9f:b8:17:fa:b9
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
AF:74:40:0B:46:07:B4:ED:E5:34:FA:8F:63:CC:11:CB:4C:B8:69:8C
X509v3 Authority Key Identifier:
keyid:AA:F5:06:77:A7:3D:3F:33:6C:90:3B:17:22:A3:17:85:6C:83:36:28
Signature Algorithm: sha256WithRSAEncryption
92:f0:e8:4d:13:39:d7:c2:02:6b:7c:f4:72:4e:77:fb:9f:5a:
33:87:18:24:6e:43:f0:91:23:0e:f5:ec:1e:ce:7c:4c:d4:aa:
db:6c:43:1a:42:52:33:c5:2b:7f:fe:1e:41:0f:82:30:24:d6:
2c:0c:73:1c:ac:a4:96:46:8e:b1:14:c7:6b:d6:a5:f5:dd:8a:
75:e7:6e:f1:10:3d:55:1a:d7:d2:2d:9e:eb:18:bb:49:83:65:
80:20:98:d3:85:d7:c6:74:fa:7a:9b:20:6a:f4:c3:ca:81:5b:
c6:ef:31:d3:65:ac:b7:43:9d:22:cf:77:69:79:fc:be:2d:eb:
00:61
-----BEGIN CERTIFICATE-----
MIICqTCCAhKgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBiMQswCQYDVQQGEwJjbjEL
MAkGA1UECAwCc2gxCzAJBgNVBAcMAnNoMQwwCgYDVQQKDAN0anUxCzAJBgNVBAsM
AmNzMQswCQYDVQQDDAJjczERMA8GCSqGSIb3DQEJARYCY3MwHhcNMTgwMTE0MDYw
MDMzWhcNMTkwMTE0MDYwMDMzWjBWMQswCQYDVQQGEwJjbjELMAkGA1UECAwCc2gx
DDAKBgNVBAoMA3RqdTELMAkGA1UECwwCY3MxDDAKBgNVBAMMA2FpcjERMA8GCSqG
SIb3DQEJARYCZHMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAL2pqENz2J9L
OlbCt/X+CPfuewjI9mHDkPBKlemmtr1gneY+V+9Q2Ma/NLeuX3IcLHfYnIHfXnFl
tjvBKtLXCjwaM0Skl623SEyNRupjx1Cs39Mi36x+JQbwLAt2ievGoeT1NOtzn6Vz
5XUyXojRmBZLOZncdHVHPEdccZ+4F/q5AgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJ
YIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1Ud
DgQWBBSvdEALRge07eU0+o9jzBHLTLhpjDAfBgNVHSMEGDAWgBSq9QZ3pz0/M2yQ
OxcioxeFbIM2KDANBgkqhkiG9w0BAQsFAAOBgQCS8OhNEznXwgJrfPRyTnf7n1oz
hxgkbkPwkSMO9eweznxM1KrbbEMaQlIzxSt//h5BD4IwJNYsDHMcrKSWRo6xFMdr
1qX13Yp1527xED1VGtfSLZ7rGLtJg2WAIJjThdfGdPp6myBq9MPKgVvG7zHTZay3
Q50iz3dpefy+LesAYQ==
-----END CERTIFICATE-----

View File

@ -0,0 +1,12 @@
-----BEGIN CERTIFICATE REQUEST-----
MIIBzDCCATUCAQAwYzELMAkGA1UEBhMCY24xCzAJBgNVBAgMAnNoMQswCQYDVQQH
DAJzaDEMMAoGA1UECgwDdGp1MQswCQYDVQQLDAJjczEMMAoGA1UEAwwDYWlyMREw
DwYJKoZIhvcNAQkBFgJkczCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvamo
Q3PYn0s6VsK39f4I9+57CMj2YcOQ8EqV6aa2vWCd5j5X71DYxr80t65fchwsd9ic
gd9ecWW2O8Eq0tcKPBozRKSXrbdITI1G6mPHUKzf0yLfrH4lBvAsC3aJ68ah5PU0
63OfpXPldTJeiNGYFks5mdx0dUc8R1xxn7gX+rkCAwEAAaApMBEGCSqGSIb3DQEJ
AjEEDAJjczAUBgkqhkiG9w0BCQcxBwwFaGVsbG8wDQYJKoZIhvcNAQELBQADgYEA
pzuTcnYvs1IIs+IfcbxddKKZW8naWQXkZ79oKmwA9o7QPjBisUa+E9eeS2JJy6f2
gSkSExACCnhRnupHTy1AKy/j3K5Ha/8vDz3277dCYm6ni8Ek4lwl0jMxMePxj78C
Jve567Z0sQXRwBpdcvhneaydUPGrHaqJ3CFCGQrWm9M=
-----END CERTIFICATE REQUEST-----

View File

@ -0,0 +1,18 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,68D4DDEA1021F3F8
mXgZPQs5Y9UX2Ir01Fs3QU9d52bhq9hGgp+ybXEoI0oPgIqMmhvZn3211uLkds1+
JXZs+PzF1gaZUH76lbpuF7ICg+zkd3TBbGjYDvMQJCrRqI3fiPNPk0jTA8eC6SKJ
ou0h57vJx+DaJ/tIVWBBfSI/Vg4MVSOseJ2kxAQH6vmoR5T8voA+URDA35902fOL
rZr4YtPYCFzfZm+eZ7ZAmxRfcQL2lXO0vOx23N6qwqePCjt9IxqPESQVd2l5q5j7
BbGKelqKEt2KqpgE8w7h8qK+ScWVA6JsUlWVS7r+hSj7S2mWgtvcIVuXHJDiKY2j
5ubCrGNl4aeiMRbotxks12FTVGAaG/IKmwzz2eP7ed1gnc5WqjYUORHS2vE+Ym6J
2Sgq1fMSHTuGZKXvF3LcmeswGoSYG+blyMUDY0P7bOQQpkMEkXqWy+Cf63NX8VjI
Y4Omqvvuvj0ZhGt8S6VhkL3qGupGWkVC/AUd4p8y9jZ2zvZUVYTbhNGnckvWZ4pG
gBAvZbSt5fCjPOfGwrgacR7GwAgMqo213jAz0xwVuKyHnyH8fW2TtBiQY/sTq8Mx
5FHKSHdciv5OrCCT1SWPASFzjIYdybpGZkSDgNDcVF/p9MjGSXXDcwtFrWDChrHX
bR/TUak88rLbnEDjgHGMmnZwUEZuAwy6JyWBLKwC+xGKGY8oQAjJJPSp4EHAoQq+
mYOXwB7iEr/fMDSi/Fs1kzsTCG5EFQNANgqKnW5WaMjlWG9BVHZ0qGLCLQscb0j8
wwx+E0xEBHGQgQoEx/uv/O7DO4OTSx8RkOrGHon5HPq1OhhIRZFLmg==
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,130 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>15.0</VCProjectVersion>
<ProjectGuid>{635A0B2F-AED9-488A-A42B-9340C22C988C}</ProjectGuid>
<RootNamespace>client1</RootNamespace>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<IncludePath>D:\OpenSSL-Win32\include;$(IncludePath)</IncludePath>
<LibraryPath>D:\OpenSSL-Win32\lib;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<IncludePath>D:\OpenSSL-Win32\include;$(IncludePath)</IncludePath>
<LibraryPath>D:\OpenSSL-Win32\lib;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>false</SDLCheck>
</ClCompile>
<Link>
<AdditionalDependencies />
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>false</SDLCheck>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies />
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="client.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="源文件">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="头文件">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="资源文件">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="client.cpp">
<Filter>源文件</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@ -0,0 +1,60 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=cn, ST=sh, L=sh, O=tju, OU=cs, CN=cs/emailAddress=cs
Validity
Not Before: Jan 14 05:57:51 2018 GMT
Not After : Jan 14 05:57:51 2019 GMT
Subject: C=cn, ST=sh, O=tju, OU=cs, CN=cs/emailAddress=cs
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
00:b6:53:85:12:76:1b:e3:62:5c:f0:1f:d4:88:3a:
68:48:cc:ca:f0:da:93:a6:9e:74:a4:70:fc:c2:5d:
90:2a:71:19:5b:56:e8:2c:ae:54:6a:bb:ba:10:1a:
c3:a9:81:82:ef:16:46:18:6b:4d:63:fd:35:8e:a5:
f2:99:cc:62:e8:ce:08:93:ca:4b:07:0e:40:2f:68:
49:c0:bb:0f:a5:6e:2a:2f:5d:a6:ca:83:21:b5:3e:
f8:45:ac:d8:2e:5a:46:98:3f:14:fe:c8:72:1d:a4:
b3:0d:01:f0:df:fb:f1:ca:2b:a9:a9:cd:8f:3a:03:
ca:20:8a:78:c7:1a:fd:7b:89
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
59:16:C8:21:D8:B5:6C:2A:09:14:58:9F:0E:DB:49:2C:C1:FA:33:2C
X509v3 Authority Key Identifier:
keyid:AA:F5:06:77:A7:3D:3F:33:6C:90:3B:17:22:A3:17:85:6C:83:36:28
Signature Algorithm: sha256WithRSAEncryption
57:d4:6a:c8:5a:e8:0a:ed:4f:9c:d2:bf:3d:27:34:2d:d1:f0:
df:d1:0a:f6:37:e6:df:ce:7f:6f:9e:62:29:5a:49:0e:23:6b:
d7:72:ac:9c:e9:7c:91:6f:60:35:b1:b1:00:79:01:6a:88:15:
3e:26:d8:e9:29:1a:c3:df:a0:d0:a7:a7:00:7a:90:00:ff:39:
ab:de:00:7c:0e:69:35:4f:d1:2d:dd:b6:35:09:69:18:1b:60:
02:7c:ed:71:77:17:70:12:00:63:da:ad:90:64:b9:a3:46:38:
c1:1e:bb:c7:c8:2c:7e:d6:2d:17:1c:f4:9b:62:48:db:f1:a0:
b4:ba
-----BEGIN CERTIFICATE-----
MIICqDCCAhGgAwIBAgIBATANBgkqhkiG9w0BAQsFADBiMQswCQYDVQQGEwJjbjEL
MAkGA1UECAwCc2gxCzAJBgNVBAcMAnNoMQwwCgYDVQQKDAN0anUxCzAJBgNVBAsM
AmNzMQswCQYDVQQDDAJjczERMA8GCSqGSIb3DQEJARYCY3MwHhcNMTgwMTE0MDU1
NzUxWhcNMTkwMTE0MDU1NzUxWjBVMQswCQYDVQQGEwJjbjELMAkGA1UECAwCc2gx
DDAKBgNVBAoMA3RqdTELMAkGA1UECwwCY3MxCzAJBgNVBAMMAmNzMREwDwYJKoZI
hvcNAQkBFgJjczCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtlOFEnYb42Jc
8B/UiDpoSMzK8NqTpp50pHD8wl2QKnEZW1boLK5Uaru6EBrDqYGC7xZGGGtNY/01
jqXymcxi6M4Ik8pLBw5AL2hJwLsPpW4qL12myoMhtT74RazYLlpGmD8U/shyHaSz
DQHw3/vxyiupqc2POgPKIIp4xxr9e4kCAwEAAaN7MHkwCQYDVR0TBAIwADAsBglg
hkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0O
BBYEFFkWyCHYtWwqCRRYnw7bSSzB+jMsMB8GA1UdIwQYMBaAFKr1BnenPT8zbJA7
FyKjF4VsgzYoMA0GCSqGSIb3DQEBCwUAA4GBAFfUasha6ArtT5zSvz0nNC3R8N/R
CvY35t/Of2+eYilaSQ4ja9dyrJzpfJFvYDWxsQB5AWqIFT4m2OkpGsPfoNCnpwB6
kAD/OaveAHwOaTVP0S3dtjUJaRgbYAJ87XF3F3ASAGParZBkuaNGOMEeu8fILH7W
LRcc9JtiSNvxoLS6
-----END CERTIFICATE-----

View File

@ -0,0 +1,12 @@
-----BEGIN CERTIFICATE REQUEST-----
MIIByzCCATQCAQAwYjELMAkGA1UEBhMCY24xCzAJBgNVBAgMAnNoMQswCQYDVQQH
DAJzaDEMMAoGA1UECgwDdGp1MQswCQYDVQQLDAJjczELMAkGA1UEAwwCY3MxETAP
BgkqhkiG9w0BCQEWAmNzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2U4US
dhvjYlzwH9SIOmhIzMrw2pOmnnSkcPzCXZAqcRlbVugsrlRqu7oQGsOpgYLvFkYY
a01j/TWOpfKZzGLozgiTyksHDkAvaEnAuw+lbiovXabKgyG1PvhFrNguWkaYPxT+
yHIdpLMNAfDf+/HKK6mpzY86A8oginjHGv17iQIDAQABoCkwEQYJKoZIhvcNAQkC
MQQMAmNzMBQGCSqGSIb3DQEJBzEHDAVoZWxsbzANBgkqhkiG9w0BAQsFAAOBgQA8
tvTRZcs74lZajjal58dSwJCXKkdsav9EOYGhsmCbcrII1vQPMRlWtLq6T9XAAHNL
nWE+cOtW0ZcCXUvkLkciUheU97C1MPwddUlDwePBRDLWiZKQB61yzFqJbiVvEWuh
yE/J5oXem90+UppKcySkw4X6oqYotQL27+WZ1HXdmA==
-----END CERTIFICATE REQUEST-----

View File

@ -0,0 +1,18 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,3CE11C6B87053C21
yuFWUCeQ0BNRaIjPZch0jsxsoLOcGfrr5UBU82OMnp4vO9/ryU3hM9pa4Rmw/Qf3
StH+pEo5cLoJbMRl0SyvOqlfamx+3RBCFvJorAjN6vEi42UEc19vCU3K+dVsHw4O
Zy9wzfc230fYLzg0RSdlDdKxwrwX843bp6qxuF71gtGvyWrmgi+mMDTWee6MEOQH
cNjKoCG/t4L5ofpYfU+EFU/zsV637XZpcJFdFJdrlWhjrdl7O8+AryYkWr60BAPd
oK2dIca2/XYezPOgWubrUt0C+iXRgij1phlbovb5ECCgfEVjAxMFe+7gE/x5QpEi
CQINsdXAHObsXRB4ZcJJN1s8KZQ1tBBGqCvt7PLFpI0sJ8fiCt7uVjP26KZHM0SQ
86HtEYtJbARC65zOSDHZgLDfx7fCOeRzNCSB8ox9kBdq7ooWaNZITdsXl+reBMKH
42Bo/T343GiXy9s1YrB4gpOrKtJDu6+drNON7mwk/+srB93/brbV0ppR3Ktz5RxJ
v2Y/PfVm10wkJvkJYucSn01+btkll+ETPNBYOzjdLqnICor4irRwiKCFAFFN8Ubw
/4dyizpAErNuU7IGd6ybQju13m/8oobzDcvdwVPaZ5xJNSI05RRxHTGbSx2e3X/t
uek9bBpaDOIOtpCPY/T4hHAslL2ysT1dONax/l2v6hVar18j9+4yr121HzXc2/JZ
6HDoeCqaVej584o2ueg0YjK68/tyu/L9ogAbhYDGJMQTK6gONwsbi6t2pYO5yudW
PHGtWQnBAAXMus2MTuzCbsbH0NbpEilEaiGiviN3Lw0=
-----END RSA PRIVATE KEY-----

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,60 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=cn, ST=sh, L=sh, O=tju, OU=cs, CN=cs/emailAddress=cs
Validity
Not Before: Jan 14 05:57:51 2018 GMT
Not After : Jan 14 05:57:51 2019 GMT
Subject: C=cn, ST=sh, O=tju, OU=cs, CN=cs/emailAddress=cs
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
00:b6:53:85:12:76:1b:e3:62:5c:f0:1f:d4:88:3a:
68:48:cc:ca:f0:da:93:a6:9e:74:a4:70:fc:c2:5d:
90:2a:71:19:5b:56:e8:2c:ae:54:6a:bb:ba:10:1a:
c3:a9:81:82:ef:16:46:18:6b:4d:63:fd:35:8e:a5:
f2:99:cc:62:e8:ce:08:93:ca:4b:07:0e:40:2f:68:
49:c0:bb:0f:a5:6e:2a:2f:5d:a6:ca:83:21:b5:3e:
f8:45:ac:d8:2e:5a:46:98:3f:14:fe:c8:72:1d:a4:
b3:0d:01:f0:df:fb:f1:ca:2b:a9:a9:cd:8f:3a:03:
ca:20:8a:78:c7:1a:fd:7b:89
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
59:16:C8:21:D8:B5:6C:2A:09:14:58:9F:0E:DB:49:2C:C1:FA:33:2C
X509v3 Authority Key Identifier:
keyid:AA:F5:06:77:A7:3D:3F:33:6C:90:3B:17:22:A3:17:85:6C:83:36:28
Signature Algorithm: sha256WithRSAEncryption
57:d4:6a:c8:5a:e8:0a:ed:4f:9c:d2:bf:3d:27:34:2d:d1:f0:
df:d1:0a:f6:37:e6:df:ce:7f:6f:9e:62:29:5a:49:0e:23:6b:
d7:72:ac:9c:e9:7c:91:6f:60:35:b1:b1:00:79:01:6a:88:15:
3e:26:d8:e9:29:1a:c3:df:a0:d0:a7:a7:00:7a:90:00:ff:39:
ab:de:00:7c:0e:69:35:4f:d1:2d:dd:b6:35:09:69:18:1b:60:
02:7c:ed:71:77:17:70:12:00:63:da:ad:90:64:b9:a3:46:38:
c1:1e:bb:c7:c8:2c:7e:d6:2d:17:1c:f4:9b:62:48:db:f1:a0:
b4:ba
-----BEGIN CERTIFICATE-----
MIICqDCCAhGgAwIBAgIBATANBgkqhkiG9w0BAQsFADBiMQswCQYDVQQGEwJjbjEL
MAkGA1UECAwCc2gxCzAJBgNVBAcMAnNoMQwwCgYDVQQKDAN0anUxCzAJBgNVBAsM
AmNzMQswCQYDVQQDDAJjczERMA8GCSqGSIb3DQEJARYCY3MwHhcNMTgwMTE0MDU1
NzUxWhcNMTkwMTE0MDU1NzUxWjBVMQswCQYDVQQGEwJjbjELMAkGA1UECAwCc2gx
DDAKBgNVBAoMA3RqdTELMAkGA1UECwwCY3MxCzAJBgNVBAMMAmNzMREwDwYJKoZI
hvcNAQkBFgJjczCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtlOFEnYb42Jc
8B/UiDpoSMzK8NqTpp50pHD8wl2QKnEZW1boLK5Uaru6EBrDqYGC7xZGGGtNY/01
jqXymcxi6M4Ik8pLBw5AL2hJwLsPpW4qL12myoMhtT74RazYLlpGmD8U/shyHaSz
DQHw3/vxyiupqc2POgPKIIp4xxr9e4kCAwEAAaN7MHkwCQYDVR0TBAIwADAsBglg
hkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0O
BBYEFFkWyCHYtWwqCRRYnw7bSSzB+jMsMB8GA1UdIwQYMBaAFKr1BnenPT8zbJA7
FyKjF4VsgzYoMA0GCSqGSIb3DQEBCwUAA4GBAFfUasha6ArtT5zSvz0nNC3R8N/R
CvY35t/Of2+eYilaSQ4ja9dyrJzpfJFvYDWxsQB5AWqIFT4m2OkpGsPfoNCnpwB6
kAD/OaveAHwOaTVP0S3dtjUJaRgbYAJ87XF3F3ASAGParZBkuaNGOMEeu8fILH7W
LRcc9JtiSNvxoLS6
-----END CERTIFICATE-----

View File

@ -0,0 +1,12 @@
-----BEGIN CERTIFICATE REQUEST-----
MIIByzCCATQCAQAwYjELMAkGA1UEBhMCY24xCzAJBgNVBAgMAnNoMQswCQYDVQQH
DAJzaDEMMAoGA1UECgwDdGp1MQswCQYDVQQLDAJjczELMAkGA1UEAwwCY3MxETAP
BgkqhkiG9w0BCQEWAmNzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2U4US
dhvjYlzwH9SIOmhIzMrw2pOmnnSkcPzCXZAqcRlbVugsrlRqu7oQGsOpgYLvFkYY
a01j/TWOpfKZzGLozgiTyksHDkAvaEnAuw+lbiovXabKgyG1PvhFrNguWkaYPxT+
yHIdpLMNAfDf+/HKK6mpzY86A8oginjHGv17iQIDAQABoCkwEQYJKoZIhvcNAQkC
MQQMAmNzMBQGCSqGSIb3DQEJBzEHDAVoZWxsbzANBgkqhkiG9w0BAQsFAAOBgQA8
tvTRZcs74lZajjal58dSwJCXKkdsav9EOYGhsmCbcrII1vQPMRlWtLq6T9XAAHNL
nWE+cOtW0ZcCXUvkLkciUheU97C1MPwddUlDwePBRDLWiZKQB61yzFqJbiVvEWuh
yE/J5oXem90+UppKcySkw4X6oqYotQL27+WZ1HXdmA==
-----END CERTIFICATE REQUEST-----

View File

@ -0,0 +1,18 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,3CE11C6B87053C21
yuFWUCeQ0BNRaIjPZch0jsxsoLOcGfrr5UBU82OMnp4vO9/ryU3hM9pa4Rmw/Qf3
StH+pEo5cLoJbMRl0SyvOqlfamx+3RBCFvJorAjN6vEi42UEc19vCU3K+dVsHw4O
Zy9wzfc230fYLzg0RSdlDdKxwrwX843bp6qxuF71gtGvyWrmgi+mMDTWee6MEOQH
cNjKoCG/t4L5ofpYfU+EFU/zsV637XZpcJFdFJdrlWhjrdl7O8+AryYkWr60BAPd
oK2dIca2/XYezPOgWubrUt0C+iXRgij1phlbovb5ECCgfEVjAxMFe+7gE/x5QpEi
CQINsdXAHObsXRB4ZcJJN1s8KZQ1tBBGqCvt7PLFpI0sJ8fiCt7uVjP26KZHM0SQ
86HtEYtJbARC65zOSDHZgLDfx7fCOeRzNCSB8ox9kBdq7ooWaNZITdsXl+reBMKH
42Bo/T343GiXy9s1YrB4gpOrKtJDu6+drNON7mwk/+srB93/brbV0ppR3Ktz5RxJ
v2Y/PfVm10wkJvkJYucSn01+btkll+ETPNBYOzjdLqnICor4irRwiKCFAFFN8Ubw
/4dyizpAErNuU7IGd6ybQju13m/8oobzDcvdwVPaZ5xJNSI05RRxHTGbSx2e3X/t
uek9bBpaDOIOtpCPY/T4hHAslL2ysT1dONax/l2v6hVar18j9+4yr121HzXc2/JZ
6HDoeCqaVej584o2ueg0YjK68/tyu/L9ogAbhYDGJMQTK6gONwsbi6t2pYO5yudW
PHGtWQnBAAXMus2MTuzCbsbH0NbpEilEaiGiviN3Lw0=
-----END RSA PRIVATE KEY-----

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,16 @@
-----BEGIN CERTIFICATE-----
MIICkjCCAfugAwIBAgIJAPWIDUMbQM2+MA0GCSqGSIb3DQEBCwUAMGIxCzAJBgNV
BAYTAmNuMQswCQYDVQQIDAJzaDELMAkGA1UEBwwCc2gxDDAKBgNVBAoMA3RqdTEL
MAkGA1UECwwCY3MxCzAJBgNVBAMMAmNzMREwDwYJKoZIhvcNAQkBFgJjczAeFw0x
ODAxMTQwNTM5MTBaFw0xODAyMTMwNTM5MTBaMGIxCzAJBgNVBAYTAmNuMQswCQYD
VQQIDAJzaDELMAkGA1UEBwwCc2gxDDAKBgNVBAoMA3RqdTELMAkGA1UECwwCY3Mx
CzAJBgNVBAMMAmNzMREwDwYJKoZIhvcNAQkBFgJjczCBnzANBgkqhkiG9w0BAQEF
AAOBjQAwgYkCgYEArpLmatttOh2wCdpE2hhMNT0RJe1rMLORQvxv0uzEzf2FoVW4
hAmyKd72l0D/+Rm6KF++mDrPIXv+11GqeY4VmKntj357dKhauH3eg6zMDrD+WqWH
S3rYVGcAOhGHD4eSR7vqGPQEgKrt4C6m4w7R1G5sG1YfijDIHTCae1qRRjECAwEA
AaNQME4wHQYDVR0OBBYEFKr1BnenPT8zbJA7FyKjF4VsgzYoMB8GA1UdIwQYMBaA
FKr1BnenPT8zbJA7FyKjF4VsgzYoMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEL
BQADgYEAUPNBc/jLlYSQylxpC/w57QN3hqlayZnAI2zW190p3xfsww2NthoytqCc
mV+8HC+8fapduWkvmgb9Yahu1EXE0OIFGYaDYxDtFenfenMRjsl4B/MUJV+3Orhc
gKCfOuwhqF4IHLaYxMDwRPC6Fqeua+HJ1wmxQa2ThJqGdAxVSyE=
-----END CERTIFICATE-----

View File

@ -0,0 +1,18 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,AB0090DD0503C739
z1l13UqVX+Id2g66PWNYK1VJwh2zojreF6Tv2NqPUH7Utq8s03eRkPLf4AleKObc
GDrfvoYgf5fwGap7hxblV6sAy5Da1dhnz/AfhKScQeORpqfORnvz6XVvAVukYx4P
u/R1QhWdf+I35spECDUU2qRmD/y7EC4C0umjrYqfZROe0zWtDBu7BzO4/G8QZUSG
RGLTFVST8y2ufTRNiWoUQo/2+qmZG942esPqcUYRQDtJyki4IRFXXwlQXXbCqQZi
sdYKlU3ZaZtqjsT3d7nVqKyCIn6OitLqAdan8ZaGXG+IEzTbCRNh07nE4JVtg15h
M+AjbsXFKd6dRu8YTESYC4IRf6cRpOjhAOz6YcQ+8GbWMUGT8QIzkYt7bkdEkaDs
WiVi/AivDMh2nmCQnvdb6wcYJhMxa2A2NUJXjUdIgoEpznjXQDDVaChh9UOXlLAo
KgkectmvmJgmuerpmRMPiLsVbcVRJJmbIvy1TCt7RW5xffSoXqp+0kr1LCWfUTgC
c8S30aRW5ZbeHPcsLeFe/DUwue5qFRP3K2y40aMSM3rB6VtMBypy4ehNq1P92tNg
S23sg96kaFvS+fmEDAzDtQlk8RrQx4DpRToCCkznidg/eYKmqY7uONWopmUGiXeg
wuGaZS7UkXic8/GR+5O0lNzCZep6Vlp323e9FgnV05qNopg+XDatIzEZbEYBo4Qo
BMJP1LUpPEt4sEPnrPTVgiIvVDgrAefbAAivzeIfCJcq7Ssa5BAjrraDYwtNUGwk
AJ0LF8XV50CsJftOLWV+duUuM/T73YseOl186xvvvxo=
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,60 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 2 (0x2)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=cn, ST=sh, L=sh, O=tju, OU=cs, CN=cs/emailAddress=cs
Validity
Not Before: Jan 14 06:00:33 2018 GMT
Not After : Jan 14 06:00:33 2019 GMT
Subject: C=cn, ST=sh, O=tju, OU=cs, CN=air/emailAddress=ds
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
00:bd:a9:a8:43:73:d8:9f:4b:3a:56:c2:b7:f5:fe:
08:f7:ee:7b:08:c8:f6:61:c3:90:f0:4a:95:e9:a6:
b6:bd:60:9d:e6:3e:57:ef:50:d8:c6:bf:34:b7:ae:
5f:72:1c:2c:77:d8:9c:81:df:5e:71:65:b6:3b:c1:
2a:d2:d7:0a:3c:1a:33:44:a4:97:ad:b7:48:4c:8d:
46:ea:63:c7:50:ac:df:d3:22:df:ac:7e:25:06:f0:
2c:0b:76:89:eb:c6:a1:e4:f5:34:eb:73:9f:a5:73:
e5:75:32:5e:88:d1:98:16:4b:39:99:dc:74:75:47:
3c:47:5c:71:9f:b8:17:fa:b9
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
AF:74:40:0B:46:07:B4:ED:E5:34:FA:8F:63:CC:11:CB:4C:B8:69:8C
X509v3 Authority Key Identifier:
keyid:AA:F5:06:77:A7:3D:3F:33:6C:90:3B:17:22:A3:17:85:6C:83:36:28
Signature Algorithm: sha256WithRSAEncryption
92:f0:e8:4d:13:39:d7:c2:02:6b:7c:f4:72:4e:77:fb:9f:5a:
33:87:18:24:6e:43:f0:91:23:0e:f5:ec:1e:ce:7c:4c:d4:aa:
db:6c:43:1a:42:52:33:c5:2b:7f:fe:1e:41:0f:82:30:24:d6:
2c:0c:73:1c:ac:a4:96:46:8e:b1:14:c7:6b:d6:a5:f5:dd:8a:
75:e7:6e:f1:10:3d:55:1a:d7:d2:2d:9e:eb:18:bb:49:83:65:
80:20:98:d3:85:d7:c6:74:fa:7a:9b:20:6a:f4:c3:ca:81:5b:
c6:ef:31:d3:65:ac:b7:43:9d:22:cf:77:69:79:fc:be:2d:eb:
00:61
-----BEGIN CERTIFICATE-----
MIICqTCCAhKgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBiMQswCQYDVQQGEwJjbjEL
MAkGA1UECAwCc2gxCzAJBgNVBAcMAnNoMQwwCgYDVQQKDAN0anUxCzAJBgNVBAsM
AmNzMQswCQYDVQQDDAJjczERMA8GCSqGSIb3DQEJARYCY3MwHhcNMTgwMTE0MDYw
MDMzWhcNMTkwMTE0MDYwMDMzWjBWMQswCQYDVQQGEwJjbjELMAkGA1UECAwCc2gx
DDAKBgNVBAoMA3RqdTELMAkGA1UECwwCY3MxDDAKBgNVBAMMA2FpcjERMA8GCSqG
SIb3DQEJARYCZHMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAL2pqENz2J9L
OlbCt/X+CPfuewjI9mHDkPBKlemmtr1gneY+V+9Q2Ma/NLeuX3IcLHfYnIHfXnFl
tjvBKtLXCjwaM0Skl623SEyNRupjx1Cs39Mi36x+JQbwLAt2ievGoeT1NOtzn6Vz
5XUyXojRmBZLOZncdHVHPEdccZ+4F/q5AgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJ
YIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1Ud
DgQWBBSvdEALRge07eU0+o9jzBHLTLhpjDAfBgNVHSMEGDAWgBSq9QZ3pz0/M2yQ
OxcioxeFbIM2KDANBgkqhkiG9w0BAQsFAAOBgQCS8OhNEznXwgJrfPRyTnf7n1oz
hxgkbkPwkSMO9eweznxM1KrbbEMaQlIzxSt//h5BD4IwJNYsDHMcrKSWRo6xFMdr
1qX13Yp1527xED1VGtfSLZ7rGLtJg2WAIJjThdfGdPp6myBq9MPKgVvG7zHTZay3
Q50iz3dpefy+LesAYQ==
-----END CERTIFICATE-----

View File

@ -0,0 +1,12 @@
-----BEGIN CERTIFICATE REQUEST-----
MIIBzDCCATUCAQAwYzELMAkGA1UEBhMCY24xCzAJBgNVBAgMAnNoMQswCQYDVQQH
DAJzaDEMMAoGA1UECgwDdGp1MQswCQYDVQQLDAJjczEMMAoGA1UEAwwDYWlyMREw
DwYJKoZIhvcNAQkBFgJkczCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvamo
Q3PYn0s6VsK39f4I9+57CMj2YcOQ8EqV6aa2vWCd5j5X71DYxr80t65fchwsd9ic
gd9ecWW2O8Eq0tcKPBozRKSXrbdITI1G6mPHUKzf0yLfrH4lBvAsC3aJ68ah5PU0
63OfpXPldTJeiNGYFks5mdx0dUc8R1xxn7gX+rkCAwEAAaApMBEGCSqGSIb3DQEJ
AjEEDAJjczAUBgkqhkiG9w0BCQcxBwwFaGVsbG8wDQYJKoZIhvcNAQELBQADgYEA
pzuTcnYvs1IIs+IfcbxddKKZW8naWQXkZ79oKmwA9o7QPjBisUa+E9eeS2JJy6f2
gSkSExACCnhRnupHTy1AKy/j3K5Ha/8vDz3277dCYm6ni8Ek4lwl0jMxMePxj78C
Jve567Z0sQXRwBpdcvhneaydUPGrHaqJ3CFCGQrWm9M=
-----END CERTIFICATE REQUEST-----

View File

@ -0,0 +1,18 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,68D4DDEA1021F3F8
mXgZPQs5Y9UX2Ir01Fs3QU9d52bhq9hGgp+ybXEoI0oPgIqMmhvZn3211uLkds1+
JXZs+PzF1gaZUH76lbpuF7ICg+zkd3TBbGjYDvMQJCrRqI3fiPNPk0jTA8eC6SKJ
ou0h57vJx+DaJ/tIVWBBfSI/Vg4MVSOseJ2kxAQH6vmoR5T8voA+URDA35902fOL
rZr4YtPYCFzfZm+eZ7ZAmxRfcQL2lXO0vOx23N6qwqePCjt9IxqPESQVd2l5q5j7
BbGKelqKEt2KqpgE8w7h8qK+ScWVA6JsUlWVS7r+hSj7S2mWgtvcIVuXHJDiKY2j
5ubCrGNl4aeiMRbotxks12FTVGAaG/IKmwzz2eP7ed1gnc5WqjYUORHS2vE+Ym6J
2Sgq1fMSHTuGZKXvF3LcmeswGoSYG+blyMUDY0P7bOQQpkMEkXqWy+Cf63NX8VjI
Y4Omqvvuvj0ZhGt8S6VhkL3qGupGWkVC/AUd4p8y9jZ2zvZUVYTbhNGnckvWZ4pG
gBAvZbSt5fCjPOfGwrgacR7GwAgMqo213jAz0xwVuKyHnyH8fW2TtBiQY/sTq8Mx
5FHKSHdciv5OrCCT1SWPASFzjIYdybpGZkSDgNDcVF/p9MjGSXXDcwtFrWDChrHX
bR/TUak88rLbnEDjgHGMmnZwUEZuAwy6JyWBLKwC+xGKGY8oQAjJJPSp4EHAoQq+
mYOXwB7iEr/fMDSi/Fs1kzsTCG5EFQNANgqKnW5WaMjlWG9BVHZ0qGLCLQscb0j8
wwx+E0xEBHGQgQoEx/uv/O7DO4OTSx8RkOrGHon5HPq1OhhIRZFLmg==
-----END RSA PRIVATE KEY-----

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,31 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27004.2005
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "server", "oj\oj.vcxproj", "{45A8BAA2-ECD7-4063-BCE3-896C7EF98E8A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{45A8BAA2-ECD7-4063-BCE3-896C7EF98E8A}.Debug|x64.ActiveCfg = Debug|x64
{45A8BAA2-ECD7-4063-BCE3-896C7EF98E8A}.Debug|x64.Build.0 = Debug|x64
{45A8BAA2-ECD7-4063-BCE3-896C7EF98E8A}.Debug|x86.ActiveCfg = Debug|Win32
{45A8BAA2-ECD7-4063-BCE3-896C7EF98E8A}.Debug|x86.Build.0 = Debug|Win32
{45A8BAA2-ECD7-4063-BCE3-896C7EF98E8A}.Release|x64.ActiveCfg = Release|x64
{45A8BAA2-ECD7-4063-BCE3-896C7EF98E8A}.Release|x64.Build.0 = Release|x64
{45A8BAA2-ECD7-4063-BCE3-896C7EF98E8A}.Release|x86.ActiveCfg = Release|Win32
{45A8BAA2-ECD7-4063-BCE3-896C7EF98E8A}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {289ADE7E-C838-4632-A0D4-9AE9CDC19DD6}
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,16 @@
-----BEGIN CERTIFICATE-----
MIICkjCCAfugAwIBAgIJAPWIDUMbQM2+MA0GCSqGSIb3DQEBCwUAMGIxCzAJBgNV
BAYTAmNuMQswCQYDVQQIDAJzaDELMAkGA1UEBwwCc2gxDDAKBgNVBAoMA3RqdTEL
MAkGA1UECwwCY3MxCzAJBgNVBAMMAmNzMREwDwYJKoZIhvcNAQkBFgJjczAeFw0x
ODAxMTQwNTM5MTBaFw0xODAyMTMwNTM5MTBaMGIxCzAJBgNVBAYTAmNuMQswCQYD
VQQIDAJzaDELMAkGA1UEBwwCc2gxDDAKBgNVBAoMA3RqdTELMAkGA1UECwwCY3Mx
CzAJBgNVBAMMAmNzMREwDwYJKoZIhvcNAQkBFgJjczCBnzANBgkqhkiG9w0BAQEF
AAOBjQAwgYkCgYEArpLmatttOh2wCdpE2hhMNT0RJe1rMLORQvxv0uzEzf2FoVW4
hAmyKd72l0D/+Rm6KF++mDrPIXv+11GqeY4VmKntj357dKhauH3eg6zMDrD+WqWH
S3rYVGcAOhGHD4eSR7vqGPQEgKrt4C6m4w7R1G5sG1YfijDIHTCae1qRRjECAwEA
AaNQME4wHQYDVR0OBBYEFKr1BnenPT8zbJA7FyKjF4VsgzYoMB8GA1UdIwQYMBaA
FKr1BnenPT8zbJA7FyKjF4VsgzYoMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEL
BQADgYEAUPNBc/jLlYSQylxpC/w57QN3hqlayZnAI2zW190p3xfsww2NthoytqCc
mV+8HC+8fapduWkvmgb9Yahu1EXE0OIFGYaDYxDtFenfenMRjsl4B/MUJV+3Orhc
gKCfOuwhqF4IHLaYxMDwRPC6Fqeua+HJ1wmxQa2ThJqGdAxVSyE=
-----END CERTIFICATE-----

View File

@ -0,0 +1,18 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,AB0090DD0503C739
z1l13UqVX+Id2g66PWNYK1VJwh2zojreF6Tv2NqPUH7Utq8s03eRkPLf4AleKObc
GDrfvoYgf5fwGap7hxblV6sAy5Da1dhnz/AfhKScQeORpqfORnvz6XVvAVukYx4P
u/R1QhWdf+I35spECDUU2qRmD/y7EC4C0umjrYqfZROe0zWtDBu7BzO4/G8QZUSG
RGLTFVST8y2ufTRNiWoUQo/2+qmZG942esPqcUYRQDtJyki4IRFXXwlQXXbCqQZi
sdYKlU3ZaZtqjsT3d7nVqKyCIn6OitLqAdan8ZaGXG+IEzTbCRNh07nE4JVtg15h
M+AjbsXFKd6dRu8YTESYC4IRf6cRpOjhAOz6YcQ+8GbWMUGT8QIzkYt7bkdEkaDs
WiVi/AivDMh2nmCQnvdb6wcYJhMxa2A2NUJXjUdIgoEpznjXQDDVaChh9UOXlLAo
KgkectmvmJgmuerpmRMPiLsVbcVRJJmbIvy1TCt7RW5xffSoXqp+0kr1LCWfUTgC
c8S30aRW5ZbeHPcsLeFe/DUwue5qFRP3K2y40aMSM3rB6VtMBypy4ehNq1P92tNg
S23sg96kaFvS+fmEDAzDtQlk8RrQx4DpRToCCkznidg/eYKmqY7uONWopmUGiXeg
wuGaZS7UkXic8/GR+5O0lNzCZep6Vlp323e9FgnV05qNopg+XDatIzEZbEYBo4Qo
BMJP1LUpPEt4sEPnrPTVgiIvVDgrAefbAAivzeIfCJcq7Ssa5BAjrraDYwtNUGwk
AJ0LF8XV50CsJftOLWV+duUuM/T73YseOl186xvvvxo=
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,141 @@
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <errno.h>
#include <sys/types.h>
#include <winsock2.h>
#include "openssl/rsa.h"
#include "openssl/crypto.h"
#include "openssl/x509.h"
#include "openssl/pem.h"
#include "openssl/ssl.h"
#include "openssl/err.h"
#include "openssl/rand.h"
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"libeay32.lib")
#pragma comment(lib,"ssleay32.lib")
#define CERTF "client.crt" /*客户端的证书(需经CA签名)*/
#define KEYF "client.key" /*客户端的私钥(建议加密存储)*/
#define CACERT "ca.crt" /*CA 的证书*/
#define PORT 1111 /*服务端的端口*/
#define SERVER_ADDR "127.0.0.1" /*服务段的IP地址*/
#define CHK_NULL(x) if ((x)==NULL) exit (-1)
#define CHK_ERR(err,s) if ((err)==-1) { perror(s); exit(-2); }
#define CHK_SSL(err) if ((err)==-1) { ERR_print_errors_fp(stderr); exit(-3); }
int main()
{
int err;
int sd;
struct sockaddr_in sa;
SSL_CTX* ctx;
SSL* ssl;
X509* server_cert;
char buf[4096];
char* str;
const SSL_METHOD *meth;
int seed_int[100]; /*存放随机序列*/
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
printf("WSAStartup()fail:%d\n", GetLastError());
return -1;
}
OpenSSL_add_ssl_algorithms(); /*初始化*/
SSL_load_error_strings(); /*为打印调试信息作准备*/
meth = TLSv1_client_method(); /*采用什么协议(SSLv2/SSLv3/TLSv1)在此指定*/
ctx = SSL_CTX_new(meth);
CHK_NULL(ctx);
SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, NULL); /*验证与否*/
SSL_CTX_load_verify_locations(ctx, CACERT, NULL); /*若验证,则放置CA证书*/
if (SSL_CTX_use_certificate_file(ctx, CERTF, SSL_FILETYPE_PEM) <= 0) {
ERR_print_errors_fp(stderr);
exit(-2);
}
if (SSL_CTX_use_PrivateKey_file(ctx, KEYF, SSL_FILETYPE_PEM) <= 0) {
ERR_print_errors_fp(stderr);
exit(-3);
}
if (!SSL_CTX_check_private_key(ctx)) {
printf("Private key does not match the certificate public key\n");
exit(-4);
}
/*构建随机数生成机制,WIN32平台必需*/
srand((unsigned)time(NULL));
for (int i = 0; i < 100; i++)
seed_int[i] = rand();
RAND_seed(seed_int, sizeof(seed_int));
/*以下是正常的TCP socket建立过程 .............................. */
printf("Begin tcp socket...\n");
sd = socket(AF_INET, SOCK_STREAM, 0); CHK_ERR(sd, "socket");
memset(&sa, '\0', sizeof(sa));
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = inet_addr(SERVER_ADDR); /* Server IP */
sa.sin_port = htons(PORT); /* Server Port number */
err = connect(sd, (struct sockaddr*) &sa,
sizeof(sa));
CHK_ERR(err, "connect");
/* TCP 链接已建立.开始 SSL 握手过程.......................... */
printf("Begin SSL negotiation \n");
ssl = SSL_new(ctx);
CHK_NULL(ssl);
SSL_set_fd(ssl, sd);
err = SSL_connect(ssl);
CHK_SSL(err);
/*打印所有加密算法的信息(可选)*/
printf("SSL connection using %s\n", SSL_get_cipher(ssl));
/*得到服务端的证书并打印些信息(可选) */
server_cert = SSL_get_peer_certificate(ssl);
CHK_NULL(server_cert);
printf("Server certificate:\n");
str = X509_NAME_oneline(X509_get_subject_name(server_cert), 0, 0);
CHK_NULL(str);
printf("\t subject: %s\n", str);
free(str);
str = X509_NAME_oneline(X509_get_issuer_name(server_cert), 0, 0);
CHK_NULL(str);
printf("\t issuer: %s\n", str);
free(str);
X509_free(server_cert); /*如不再需要,需将证书释放 */
/* 数据交换开始,用SSL_write,SSL_read代替write,read */
printf("Begin SSL data exchange\n");
err = SSL_write(ssl, "Hello World!", strlen("Hello World!"));
CHK_SSL(err);
err = SSL_read(ssl, buf, sizeof(buf) - 1);
CHK_SSL(err);
buf[err] = '\0';
printf("Got %d chars:'%s'\n", err, buf);
SSL_shutdown(ssl); /* send SSL/TLS close_notify */
/* 收尾工作 */
shutdown(sd, 2);
SSL_free(ssl);
SSL_CTX_free(ctx);
return 0;
}

View File

@ -0,0 +1,141 @@
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <errno.h>
#include <sys/types.h>
#include <winsock2.h>
#include "openssl/rsa.h"
#include "openssl/crypto.h"
#include "openssl/x509.h"
#include "openssl/pem.h"
#include "openssl/ssl.h"
#include "openssl/err.h"
#include "openssl/rand.h"
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"libeay32.lib")
#pragma comment(lib,"ssleay32.lib")
#define CERTF "client.crt" /*客户端的证书(需经CA签名)*/
#define KEYF "client.key" /*客户端的私钥(建议加密存储)*/
#define CACERT "ca.crt" /*CA 的证书*/
#define PORT 1111 /*服务端的端口*/
#define SERVER_ADDR "127.0.0.1" /*服务段的IP地址*/
#define CHK_NULL(x) if ((x)==NULL) exit (-1)
#define CHK_ERR(err,s) if ((err)==-1) { perror(s); exit(-2); }
#define CHK_SSL(err) if ((err)==-1) { ERR_print_errors_fp(stderr); exit(-3); }
int main()
{
int err;
int sd;
struct sockaddr_in sa;
SSL_CTX* ctx;
SSL* ssl;
X509* server_cert;
char buf[4096];
char* str;
const SSL_METHOD *meth;
int seed_int[100]; /*存放随机序列*/
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
printf("WSAStartup()fail:%d\n", GetLastError());
return -1;
}
OpenSSL_add_ssl_algorithms(); /*初始化*/
SSL_load_error_strings(); /*为打印调试信息作准备*/
meth = TLSv1_client_method(); /*采用什么协议(SSLv2/SSLv3/TLSv1)在此指定*/
ctx = SSL_CTX_new(meth);
CHK_NULL(ctx);
SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, NULL); /*验证与否*/
SSL_CTX_load_verify_locations(ctx, CACERT, NULL); /*若验证,则放置CA证书*/
if (SSL_CTX_use_certificate_file(ctx, CERTF, SSL_FILETYPE_PEM) <= 0) {
ERR_print_errors_fp(stderr);
exit(-2);
}
if (SSL_CTX_use_PrivateKey_file(ctx, KEYF, SSL_FILETYPE_PEM) <= 0) {
ERR_print_errors_fp(stderr);
exit(-3);
}
if (!SSL_CTX_check_private_key(ctx)) {
printf("Private key does not match the certificate public key\n");
exit(-4);
}
/*构建随机数生成机制,WIN32平台必需*/
srand((unsigned)time(NULL));
for (int i = 0; i < 100; i++)
seed_int[i] = rand();
RAND_seed(seed_int, sizeof(seed_int));
/*以下是正常的TCP socket建立过程 .............................. */
printf("Begin tcp socket...\n");
sd = socket(AF_INET, SOCK_STREAM, 0); CHK_ERR(sd, "socket");
memset(&sa, '\0', sizeof(sa));
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = inet_addr(SERVER_ADDR); /* Server IP */
sa.sin_port = htons(PORT); /* Server Port number */
err = connect(sd, (struct sockaddr*) &sa,
sizeof(sa));
CHK_ERR(err, "connect");
/* TCP 链接已建立.开始 SSL 握手过程.......................... */
printf("Begin SSL negotiation \n");
ssl = SSL_new(ctx);
CHK_NULL(ssl);
SSL_set_fd(ssl, sd);
err = SSL_connect(ssl);
CHK_SSL(err);
/*打印所有加密算法的信息(可选)*/
printf("SSL connection using %s\n", SSL_get_cipher(ssl));
/*得到服务端的证书并打印些信息(可选) */
server_cert = SSL_get_peer_certificate(ssl);
CHK_NULL(server_cert);
printf("Server certificate:\n");
str = X509_NAME_oneline(X509_get_subject_name(server_cert), 0, 0);
CHK_NULL(str);
printf("\t subject: %s\n", str);
free(str);
str = X509_NAME_oneline(X509_get_issuer_name(server_cert), 0, 0);
CHK_NULL(str);
printf("\t issuer: %s\n", str);
free(str);
X509_free(server_cert); /*如不再需要,需将证书释放 */
/* 数据交换开始,用SSL_write,SSL_read代替write,read */
printf("Begin SSL data exchange\n");
err = SSL_write(ssl, "Hello World!", strlen("Hello World!"));
CHK_SSL(err);
err = SSL_read(ssl, buf, sizeof(buf) - 1);
CHK_SSL(err);
buf[err] = '\0';
printf("Got %d chars:'%s'\n", err, buf);
SSL_shutdown(ssl); /* send SSL/TLS close_notify */
/* 收尾工作 */
shutdown(sd, 2);
SSL_free(ssl);
SSL_CTX_free(ctx);
return 0;
}

View File

@ -0,0 +1,60 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 2 (0x2)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=cn, ST=sh, L=sh, O=tju, OU=cs, CN=cs/emailAddress=cs
Validity
Not Before: Jan 14 06:00:33 2018 GMT
Not After : Jan 14 06:00:33 2019 GMT
Subject: C=cn, ST=sh, O=tju, OU=cs, CN=air/emailAddress=ds
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
00:bd:a9:a8:43:73:d8:9f:4b:3a:56:c2:b7:f5:fe:
08:f7:ee:7b:08:c8:f6:61:c3:90:f0:4a:95:e9:a6:
b6:bd:60:9d:e6:3e:57:ef:50:d8:c6:bf:34:b7:ae:
5f:72:1c:2c:77:d8:9c:81:df:5e:71:65:b6:3b:c1:
2a:d2:d7:0a:3c:1a:33:44:a4:97:ad:b7:48:4c:8d:
46:ea:63:c7:50:ac:df:d3:22:df:ac:7e:25:06:f0:
2c:0b:76:89:eb:c6:a1:e4:f5:34:eb:73:9f:a5:73:
e5:75:32:5e:88:d1:98:16:4b:39:99:dc:74:75:47:
3c:47:5c:71:9f:b8:17:fa:b9
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
AF:74:40:0B:46:07:B4:ED:E5:34:FA:8F:63:CC:11:CB:4C:B8:69:8C
X509v3 Authority Key Identifier:
keyid:AA:F5:06:77:A7:3D:3F:33:6C:90:3B:17:22:A3:17:85:6C:83:36:28
Signature Algorithm: sha256WithRSAEncryption
92:f0:e8:4d:13:39:d7:c2:02:6b:7c:f4:72:4e:77:fb:9f:5a:
33:87:18:24:6e:43:f0:91:23:0e:f5:ec:1e:ce:7c:4c:d4:aa:
db:6c:43:1a:42:52:33:c5:2b:7f:fe:1e:41:0f:82:30:24:d6:
2c:0c:73:1c:ac:a4:96:46:8e:b1:14:c7:6b:d6:a5:f5:dd:8a:
75:e7:6e:f1:10:3d:55:1a:d7:d2:2d:9e:eb:18:bb:49:83:65:
80:20:98:d3:85:d7:c6:74:fa:7a:9b:20:6a:f4:c3:ca:81:5b:
c6:ef:31:d3:65:ac:b7:43:9d:22:cf:77:69:79:fc:be:2d:eb:
00:61
-----BEGIN CERTIFICATE-----
MIICqTCCAhKgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBiMQswCQYDVQQGEwJjbjEL
MAkGA1UECAwCc2gxCzAJBgNVBAcMAnNoMQwwCgYDVQQKDAN0anUxCzAJBgNVBAsM
AmNzMQswCQYDVQQDDAJjczERMA8GCSqGSIb3DQEJARYCY3MwHhcNMTgwMTE0MDYw
MDMzWhcNMTkwMTE0MDYwMDMzWjBWMQswCQYDVQQGEwJjbjELMAkGA1UECAwCc2gx
DDAKBgNVBAoMA3RqdTELMAkGA1UECwwCY3MxDDAKBgNVBAMMA2FpcjERMA8GCSqG
SIb3DQEJARYCZHMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAL2pqENz2J9L
OlbCt/X+CPfuewjI9mHDkPBKlemmtr1gneY+V+9Q2Ma/NLeuX3IcLHfYnIHfXnFl
tjvBKtLXCjwaM0Skl623SEyNRupjx1Cs39Mi36x+JQbwLAt2ievGoeT1NOtzn6Vz
5XUyXojRmBZLOZncdHVHPEdccZ+4F/q5AgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJ
YIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1Ud
DgQWBBSvdEALRge07eU0+o9jzBHLTLhpjDAfBgNVHSMEGDAWgBSq9QZ3pz0/M2yQ
OxcioxeFbIM2KDANBgkqhkiG9w0BAQsFAAOBgQCS8OhNEznXwgJrfPRyTnf7n1oz
hxgkbkPwkSMO9eweznxM1KrbbEMaQlIzxSt//h5BD4IwJNYsDHMcrKSWRo6xFMdr
1qX13Yp1527xED1VGtfSLZ7rGLtJg2WAIJjThdfGdPp6myBq9MPKgVvG7zHTZay3
Q50iz3dpefy+LesAYQ==
-----END CERTIFICATE-----

View File

@ -0,0 +1,12 @@
-----BEGIN CERTIFICATE REQUEST-----
MIIBzDCCATUCAQAwYzELMAkGA1UEBhMCY24xCzAJBgNVBAgMAnNoMQswCQYDVQQH
DAJzaDEMMAoGA1UECgwDdGp1MQswCQYDVQQLDAJjczEMMAoGA1UEAwwDYWlyMREw
DwYJKoZIhvcNAQkBFgJkczCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvamo
Q3PYn0s6VsK39f4I9+57CMj2YcOQ8EqV6aa2vWCd5j5X71DYxr80t65fchwsd9ic
gd9ecWW2O8Eq0tcKPBozRKSXrbdITI1G6mPHUKzf0yLfrH4lBvAsC3aJ68ah5PU0
63OfpXPldTJeiNGYFks5mdx0dUc8R1xxn7gX+rkCAwEAAaApMBEGCSqGSIb3DQEJ
AjEEDAJjczAUBgkqhkiG9w0BCQcxBwwFaGVsbG8wDQYJKoZIhvcNAQELBQADgYEA
pzuTcnYvs1IIs+IfcbxddKKZW8naWQXkZ79oKmwA9o7QPjBisUa+E9eeS2JJy6f2
gSkSExACCnhRnupHTy1AKy/j3K5Ha/8vDz3277dCYm6ni8Ek4lwl0jMxMePxj78C
Jve567Z0sQXRwBpdcvhneaydUPGrHaqJ3CFCGQrWm9M=
-----END CERTIFICATE REQUEST-----

View File

@ -0,0 +1,18 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,68D4DDEA1021F3F8
mXgZPQs5Y9UX2Ir01Fs3QU9d52bhq9hGgp+ybXEoI0oPgIqMmhvZn3211uLkds1+
JXZs+PzF1gaZUH76lbpuF7ICg+zkd3TBbGjYDvMQJCrRqI3fiPNPk0jTA8eC6SKJ
ou0h57vJx+DaJ/tIVWBBfSI/Vg4MVSOseJ2kxAQH6vmoR5T8voA+URDA35902fOL
rZr4YtPYCFzfZm+eZ7ZAmxRfcQL2lXO0vOx23N6qwqePCjt9IxqPESQVd2l5q5j7
BbGKelqKEt2KqpgE8w7h8qK+ScWVA6JsUlWVS7r+hSj7S2mWgtvcIVuXHJDiKY2j
5ubCrGNl4aeiMRbotxks12FTVGAaG/IKmwzz2eP7ed1gnc5WqjYUORHS2vE+Ym6J
2Sgq1fMSHTuGZKXvF3LcmeswGoSYG+blyMUDY0P7bOQQpkMEkXqWy+Cf63NX8VjI
Y4Omqvvuvj0ZhGt8S6VhkL3qGupGWkVC/AUd4p8y9jZ2zvZUVYTbhNGnckvWZ4pG
gBAvZbSt5fCjPOfGwrgacR7GwAgMqo213jAz0xwVuKyHnyH8fW2TtBiQY/sTq8Mx
5FHKSHdciv5OrCCT1SWPASFzjIYdybpGZkSDgNDcVF/p9MjGSXXDcwtFrWDChrHX
bR/TUak88rLbnEDjgHGMmnZwUEZuAwy6JyWBLKwC+xGKGY8oQAjJJPSp4EHAoQq+
mYOXwB7iEr/fMDSi/Fs1kzsTCG5EFQNANgqKnW5WaMjlWG9BVHZ0qGLCLQscb0j8
wwx+E0xEBHGQgQoEx/uv/O7DO4OTSx8RkOrGHon5HPq1OhhIRZFLmg==
-----END RSA PRIVATE KEY-----

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,138 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>15.0</VCProjectVersion>
<ProjectGuid>{45A8BAA2-ECD7-4063-BCE3-896C7EF98E8A}</ProjectGuid>
<RootNamespace>oj</RootNamespace>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<ProjectName>server</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<IncludePath>S:\openssl-1.0.2n\inc32\openssl;$(IncludePath)</IncludePath>
<LibraryPath>S:\openssl-1.0.2n\out32dll;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<IncludePath>S:\openssl-1.0.2n\inc32\openssl;$(IncludePath)</IncludePath>
<LibraryPath>S:\openssl-1.0.2n\out32dll;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<IncludePath>D:\OpenSSL-Win32\include;$(IncludePath)</IncludePath>
<LibraryPath>D:\OpenSSL-Win32\lib;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<IncludePath>D:\OpenSSL-Win32\include;$(IncludePath)</IncludePath>
<LibraryPath>D:\OpenSSL-Win32\lib;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>false</SDLCheck>
</ClCompile>
<Link>
<AdditionalDependencies />
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>false</SDLCheck>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="server.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="源文件">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="头文件">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="资源文件">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="server.cpp">
<Filter>源文件</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
</Project>

View File

@ -0,0 +1,153 @@
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <errno.h>
#include <sys/types.h>
#include <winsock2.h>
#include "openssl/rsa.h"
#include "openssl/crypto.h"
#include "openssl/x509.h"
#include "openssl/pem.h"
#include "openssl/ssl.h"
#include "openssl/err.h"
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"libeay32.lib")
#pragma comment(lib,"ssleay32.lib")
/*所有需要的参数信息都在此处以#define的形式提供*/
#define CERTF "server.crt" /*服务端的证书(需经CA签名)*/
#define KEYF "server.key" /*服务端的私钥(建议加密存储)*/
#define CACERT "ca.crt" /*CA 的证书*/
#define PORT 1111 /*准备绑定的端口*/
#define CHK_NULL(x) if ((x)==NULL) exit (1)
#define CHK_ERR(err,s) if ((err)==-1) { perror(s); exit(1); }
#define CHK_SSL(err) if ((err)==-1) { ERR_print_errors_fp(stderr); exit(2); }
int main()
{
int err;
int listen_sd;
int sd;
struct sockaddr_in sa_serv;
struct sockaddr_in sa_cli;
int client_len;
SSL_CTX* ctx;
SSL* ssl;
X509* client_cert;
char* str;
char buf[4096];
const SSL_METHOD *meth;
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
printf("WSAStartup()fail:%d\n", GetLastError());
return -1;
}
SSL_load_error_strings(); /*为打印调试信息作准备*/
OpenSSL_add_ssl_algorithms(); /*初始化*/
meth = TLSv1_server_method(); /*采用什么协议(SSLv2/SSLv3/TLSv1)在此指定*/
ctx = SSL_CTX_new(meth);
CHK_NULL(ctx);
SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, NULL); /*验证与否*/
SSL_CTX_load_verify_locations(ctx, CACERT, NULL); /*若验证,则放置CA证书*/
if (SSL_CTX_use_certificate_file(ctx, CERTF, SSL_FILETYPE_PEM) <= 0) {
ERR_print_errors_fp(stderr);
exit(3);
}
if (SSL_CTX_use_PrivateKey_file(ctx, KEYF, SSL_FILETYPE_PEM) <= 0) {
ERR_print_errors_fp(stderr);
exit(4);
}
if (!SSL_CTX_check_private_key(ctx)) {
printf("Private key does not match the certificate public key\n");
exit(5);
}
SSL_CTX_set_cipher_list(ctx, "RC4-MD5");
/*开始正常的TCP socket过程.................................*/
printf("Begin TCP socket...\n");
listen_sd = socket(AF_INET, SOCK_STREAM, 0);
CHK_ERR(listen_sd, "socket");
memset(&sa_serv, '\0', sizeof(sa_serv));
sa_serv.sin_family = AF_INET;
sa_serv.sin_addr.s_addr = INADDR_ANY;
sa_serv.sin_port = htons(PORT);
err = bind(listen_sd, (struct sockaddr*) &sa_serv,
sizeof(sa_serv));
CHK_ERR(err, "bind");
/*接受TCP链接*/
err = listen(listen_sd, 5);
CHK_ERR(err, "listen");
client_len = sizeof(sa_cli);
sd = accept(listen_sd, (struct sockaddr*) &sa_cli, &client_len);
CHK_ERR(sd, "accept");
closesocket(listen_sd);
printf("Connection from %lx, port %x\n",
sa_cli.sin_addr.s_addr, sa_cli.sin_port);
/*TCP连接已建立,进行服务端的SSL过程. */
printf("Begin server side SSL\n");
ssl = SSL_new(ctx);
CHK_NULL(ssl);
SSL_set_fd(ssl, sd);
err = SSL_accept(ssl);
printf("SSL_accept finished\n");
CHK_SSL(err);
/*打印所有加密算法的信息(可选)*/
printf("SSL connection using %s\n", SSL_get_cipher(ssl));
/*得到客户端的证书并打印些信息(可选) */
client_cert = SSL_get_peer_certificate(ssl);
if (client_cert != NULL) {
printf("客户端证书是:\n");
str = X509_NAME_oneline(X509_get_subject_name(client_cert), 0, 0);
CHK_NULL(str);
printf("\t subject: %s\n", str);
// free(str);
str = X509_NAME_oneline(X509_get_issuer_name(client_cert), 0, 0);
if (str == NULL)
printf("issuer null");
CHK_NULL(str);
printf("\t issuer: %s\n", str);
// free(str);
X509_free(client_cert);/*如不再需要,需将证书释放 */
}
else
printf("Client does not have certificate.\n");
/* 数据交换开始,用SSL_write,SSL_read代替write,read */
err = SSL_read(ssl, buf, sizeof(buf) - 1);
CHK_SSL(err);
buf[err] = '\0';
printf("Got %d chars:'%s'\n", err, buf);
err = SSL_write(ssl, "服务器收到了.", strlen("服务器收到了."));
CHK_SSL(err);
/* 收尾工作*/
shutdown(sd, 2);
SSL_free(ssl);
SSL_CTX_free(ctx);
system("pause");
return 0;
}

View File

@ -0,0 +1,60 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=cn, ST=sh, L=sh, O=tju, OU=cs, CN=cs/emailAddress=cs
Validity
Not Before: Jan 14 05:57:51 2018 GMT
Not After : Jan 14 05:57:51 2019 GMT
Subject: C=cn, ST=sh, O=tju, OU=cs, CN=cs/emailAddress=cs
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
00:b6:53:85:12:76:1b:e3:62:5c:f0:1f:d4:88:3a:
68:48:cc:ca:f0:da:93:a6:9e:74:a4:70:fc:c2:5d:
90:2a:71:19:5b:56:e8:2c:ae:54:6a:bb:ba:10:1a:
c3:a9:81:82:ef:16:46:18:6b:4d:63:fd:35:8e:a5:
f2:99:cc:62:e8:ce:08:93:ca:4b:07:0e:40:2f:68:
49:c0:bb:0f:a5:6e:2a:2f:5d:a6:ca:83:21:b5:3e:
f8:45:ac:d8:2e:5a:46:98:3f:14:fe:c8:72:1d:a4:
b3:0d:01:f0:df:fb:f1:ca:2b:a9:a9:cd:8f:3a:03:
ca:20:8a:78:c7:1a:fd:7b:89
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
59:16:C8:21:D8:B5:6C:2A:09:14:58:9F:0E:DB:49:2C:C1:FA:33:2C
X509v3 Authority Key Identifier:
keyid:AA:F5:06:77:A7:3D:3F:33:6C:90:3B:17:22:A3:17:85:6C:83:36:28
Signature Algorithm: sha256WithRSAEncryption
57:d4:6a:c8:5a:e8:0a:ed:4f:9c:d2:bf:3d:27:34:2d:d1:f0:
df:d1:0a:f6:37:e6:df:ce:7f:6f:9e:62:29:5a:49:0e:23:6b:
d7:72:ac:9c:e9:7c:91:6f:60:35:b1:b1:00:79:01:6a:88:15:
3e:26:d8:e9:29:1a:c3:df:a0:d0:a7:a7:00:7a:90:00:ff:39:
ab:de:00:7c:0e:69:35:4f:d1:2d:dd:b6:35:09:69:18:1b:60:
02:7c:ed:71:77:17:70:12:00:63:da:ad:90:64:b9:a3:46:38:
c1:1e:bb:c7:c8:2c:7e:d6:2d:17:1c:f4:9b:62:48:db:f1:a0:
b4:ba
-----BEGIN CERTIFICATE-----
MIICqDCCAhGgAwIBAgIBATANBgkqhkiG9w0BAQsFADBiMQswCQYDVQQGEwJjbjEL
MAkGA1UECAwCc2gxCzAJBgNVBAcMAnNoMQwwCgYDVQQKDAN0anUxCzAJBgNVBAsM
AmNzMQswCQYDVQQDDAJjczERMA8GCSqGSIb3DQEJARYCY3MwHhcNMTgwMTE0MDU1
NzUxWhcNMTkwMTE0MDU1NzUxWjBVMQswCQYDVQQGEwJjbjELMAkGA1UECAwCc2gx
DDAKBgNVBAoMA3RqdTELMAkGA1UECwwCY3MxCzAJBgNVBAMMAmNzMREwDwYJKoZI
hvcNAQkBFgJjczCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtlOFEnYb42Jc
8B/UiDpoSMzK8NqTpp50pHD8wl2QKnEZW1boLK5Uaru6EBrDqYGC7xZGGGtNY/01
jqXymcxi6M4Ik8pLBw5AL2hJwLsPpW4qL12myoMhtT74RazYLlpGmD8U/shyHaSz
DQHw3/vxyiupqc2POgPKIIp4xxr9e4kCAwEAAaN7MHkwCQYDVR0TBAIwADAsBglg
hkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0O
BBYEFFkWyCHYtWwqCRRYnw7bSSzB+jMsMB8GA1UdIwQYMBaAFKr1BnenPT8zbJA7
FyKjF4VsgzYoMA0GCSqGSIb3DQEBCwUAA4GBAFfUasha6ArtT5zSvz0nNC3R8N/R
CvY35t/Of2+eYilaSQ4ja9dyrJzpfJFvYDWxsQB5AWqIFT4m2OkpGsPfoNCnpwB6
kAD/OaveAHwOaTVP0S3dtjUJaRgbYAJ87XF3F3ASAGParZBkuaNGOMEeu8fILH7W
LRcc9JtiSNvxoLS6
-----END CERTIFICATE-----

View File

@ -0,0 +1,12 @@
-----BEGIN CERTIFICATE REQUEST-----
MIIByzCCATQCAQAwYjELMAkGA1UEBhMCY24xCzAJBgNVBAgMAnNoMQswCQYDVQQH
DAJzaDEMMAoGA1UECgwDdGp1MQswCQYDVQQLDAJjczELMAkGA1UEAwwCY3MxETAP
BgkqhkiG9w0BCQEWAmNzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2U4US
dhvjYlzwH9SIOmhIzMrw2pOmnnSkcPzCXZAqcRlbVugsrlRqu7oQGsOpgYLvFkYY
a01j/TWOpfKZzGLozgiTyksHDkAvaEnAuw+lbiovXabKgyG1PvhFrNguWkaYPxT+
yHIdpLMNAfDf+/HKK6mpzY86A8oginjHGv17iQIDAQABoCkwEQYJKoZIhvcNAQkC
MQQMAmNzMBQGCSqGSIb3DQEJBzEHDAVoZWxsbzANBgkqhkiG9w0BAQsFAAOBgQA8
tvTRZcs74lZajjal58dSwJCXKkdsav9EOYGhsmCbcrII1vQPMRlWtLq6T9XAAHNL
nWE+cOtW0ZcCXUvkLkciUheU97C1MPwddUlDwePBRDLWiZKQB61yzFqJbiVvEWuh
yE/J5oXem90+UppKcySkw4X6oqYotQL27+WZ1HXdmA==
-----END CERTIFICATE REQUEST-----

View File

@ -0,0 +1,18 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,3CE11C6B87053C21
yuFWUCeQ0BNRaIjPZch0jsxsoLOcGfrr5UBU82OMnp4vO9/ryU3hM9pa4Rmw/Qf3
StH+pEo5cLoJbMRl0SyvOqlfamx+3RBCFvJorAjN6vEi42UEc19vCU3K+dVsHw4O
Zy9wzfc230fYLzg0RSdlDdKxwrwX843bp6qxuF71gtGvyWrmgi+mMDTWee6MEOQH
cNjKoCG/t4L5ofpYfU+EFU/zsV637XZpcJFdFJdrlWhjrdl7O8+AryYkWr60BAPd
oK2dIca2/XYezPOgWubrUt0C+iXRgij1phlbovb5ECCgfEVjAxMFe+7gE/x5QpEi
CQINsdXAHObsXRB4ZcJJN1s8KZQ1tBBGqCvt7PLFpI0sJ8fiCt7uVjP26KZHM0SQ
86HtEYtJbARC65zOSDHZgLDfx7fCOeRzNCSB8ox9kBdq7ooWaNZITdsXl+reBMKH
42Bo/T343GiXy9s1YrB4gpOrKtJDu6+drNON7mwk/+srB93/brbV0ppR3Ktz5RxJ
v2Y/PfVm10wkJvkJYucSn01+btkll+ETPNBYOzjdLqnICor4irRwiKCFAFFN8Ubw
/4dyizpAErNuU7IGd6ybQju13m/8oobzDcvdwVPaZ5xJNSI05RRxHTGbSx2e3X/t
uek9bBpaDOIOtpCPY/T4hHAslL2ysT1dONax/l2v6hVar18j9+4yr121HzXc2/JZ
6HDoeCqaVej584o2ueg0YjK68/tyu/L9ogAbhYDGJMQTK6gONwsbi6t2pYO5yudW
PHGtWQnBAAXMus2MTuzCbsbH0NbpEilEaiGiviN3Lw0=
-----END RSA PRIVATE KEY-----

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,60 @@
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=cn, ST=sh, L=sh, O=tju, OU=cs, CN=cs/emailAddress=cs
Validity
Not Before: Jan 14 05:57:51 2018 GMT
Not After : Jan 14 05:57:51 2019 GMT
Subject: C=cn, ST=sh, O=tju, OU=cs, CN=cs/emailAddress=cs
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
00:b6:53:85:12:76:1b:e3:62:5c:f0:1f:d4:88:3a:
68:48:cc:ca:f0:da:93:a6:9e:74:a4:70:fc:c2:5d:
90:2a:71:19:5b:56:e8:2c:ae:54:6a:bb:ba:10:1a:
c3:a9:81:82:ef:16:46:18:6b:4d:63:fd:35:8e:a5:
f2:99:cc:62:e8:ce:08:93:ca:4b:07:0e:40:2f:68:
49:c0:bb:0f:a5:6e:2a:2f:5d:a6:ca:83:21:b5:3e:
f8:45:ac:d8:2e:5a:46:98:3f:14:fe:c8:72:1d:a4:
b3:0d:01:f0:df:fb:f1:ca:2b:a9:a9:cd:8f:3a:03:
ca:20:8a:78:c7:1a:fd:7b:89
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
59:16:C8:21:D8:B5:6C:2A:09:14:58:9F:0E:DB:49:2C:C1:FA:33:2C
X509v3 Authority Key Identifier:
keyid:AA:F5:06:77:A7:3D:3F:33:6C:90:3B:17:22:A3:17:85:6C:83:36:28
Signature Algorithm: sha256WithRSAEncryption
57:d4:6a:c8:5a:e8:0a:ed:4f:9c:d2:bf:3d:27:34:2d:d1:f0:
df:d1:0a:f6:37:e6:df:ce:7f:6f:9e:62:29:5a:49:0e:23:6b:
d7:72:ac:9c:e9:7c:91:6f:60:35:b1:b1:00:79:01:6a:88:15:
3e:26:d8:e9:29:1a:c3:df:a0:d0:a7:a7:00:7a:90:00:ff:39:
ab:de:00:7c:0e:69:35:4f:d1:2d:dd:b6:35:09:69:18:1b:60:
02:7c:ed:71:77:17:70:12:00:63:da:ad:90:64:b9:a3:46:38:
c1:1e:bb:c7:c8:2c:7e:d6:2d:17:1c:f4:9b:62:48:db:f1:a0:
b4:ba
-----BEGIN CERTIFICATE-----
MIICqDCCAhGgAwIBAgIBATANBgkqhkiG9w0BAQsFADBiMQswCQYDVQQGEwJjbjEL
MAkGA1UECAwCc2gxCzAJBgNVBAcMAnNoMQwwCgYDVQQKDAN0anUxCzAJBgNVBAsM
AmNzMQswCQYDVQQDDAJjczERMA8GCSqGSIb3DQEJARYCY3MwHhcNMTgwMTE0MDU1
NzUxWhcNMTkwMTE0MDU1NzUxWjBVMQswCQYDVQQGEwJjbjELMAkGA1UECAwCc2gx
DDAKBgNVBAoMA3RqdTELMAkGA1UECwwCY3MxCzAJBgNVBAMMAmNzMREwDwYJKoZI
hvcNAQkBFgJjczCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtlOFEnYb42Jc
8B/UiDpoSMzK8NqTpp50pHD8wl2QKnEZW1boLK5Uaru6EBrDqYGC7xZGGGtNY/01
jqXymcxi6M4Ik8pLBw5AL2hJwLsPpW4qL12myoMhtT74RazYLlpGmD8U/shyHaSz
DQHw3/vxyiupqc2POgPKIIp4xxr9e4kCAwEAAaN7MHkwCQYDVR0TBAIwADAsBglg
hkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0O
BBYEFFkWyCHYtWwqCRRYnw7bSSzB+jMsMB8GA1UdIwQYMBaAFKr1BnenPT8zbJA7
FyKjF4VsgzYoMA0GCSqGSIb3DQEBCwUAA4GBAFfUasha6ArtT5zSvz0nNC3R8N/R
CvY35t/Of2+eYilaSQ4ja9dyrJzpfJFvYDWxsQB5AWqIFT4m2OkpGsPfoNCnpwB6
kAD/OaveAHwOaTVP0S3dtjUJaRgbYAJ87XF3F3ASAGParZBkuaNGOMEeu8fILH7W
LRcc9JtiSNvxoLS6
-----END CERTIFICATE-----

View File

@ -0,0 +1,12 @@
-----BEGIN CERTIFICATE REQUEST-----
MIIByzCCATQCAQAwYjELMAkGA1UEBhMCY24xCzAJBgNVBAgMAnNoMQswCQYDVQQH
DAJzaDEMMAoGA1UECgwDdGp1MQswCQYDVQQLDAJjczELMAkGA1UEAwwCY3MxETAP
BgkqhkiG9w0BCQEWAmNzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2U4US
dhvjYlzwH9SIOmhIzMrw2pOmnnSkcPzCXZAqcRlbVugsrlRqu7oQGsOpgYLvFkYY
a01j/TWOpfKZzGLozgiTyksHDkAvaEnAuw+lbiovXabKgyG1PvhFrNguWkaYPxT+
yHIdpLMNAfDf+/HKK6mpzY86A8oginjHGv17iQIDAQABoCkwEQYJKoZIhvcNAQkC
MQQMAmNzMBQGCSqGSIb3DQEJBzEHDAVoZWxsbzANBgkqhkiG9w0BAQsFAAOBgQA8
tvTRZcs74lZajjal58dSwJCXKkdsav9EOYGhsmCbcrII1vQPMRlWtLq6T9XAAHNL
nWE+cOtW0ZcCXUvkLkciUheU97C1MPwddUlDwePBRDLWiZKQB61yzFqJbiVvEWuh
yE/J5oXem90+UppKcySkw4X6oqYotQL27+WZ1HXdmA==
-----END CERTIFICATE REQUEST-----

View File

@ -0,0 +1,18 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,3CE11C6B87053C21
yuFWUCeQ0BNRaIjPZch0jsxsoLOcGfrr5UBU82OMnp4vO9/ryU3hM9pa4Rmw/Qf3
StH+pEo5cLoJbMRl0SyvOqlfamx+3RBCFvJorAjN6vEi42UEc19vCU3K+dVsHw4O
Zy9wzfc230fYLzg0RSdlDdKxwrwX843bp6qxuF71gtGvyWrmgi+mMDTWee6MEOQH
cNjKoCG/t4L5ofpYfU+EFU/zsV637XZpcJFdFJdrlWhjrdl7O8+AryYkWr60BAPd
oK2dIca2/XYezPOgWubrUt0C+iXRgij1phlbovb5ECCgfEVjAxMFe+7gE/x5QpEi
CQINsdXAHObsXRB4ZcJJN1s8KZQ1tBBGqCvt7PLFpI0sJ8fiCt7uVjP26KZHM0SQ
86HtEYtJbARC65zOSDHZgLDfx7fCOeRzNCSB8ox9kBdq7ooWaNZITdsXl+reBMKH
42Bo/T343GiXy9s1YrB4gpOrKtJDu6+drNON7mwk/+srB93/brbV0ppR3Ktz5RxJ
v2Y/PfVm10wkJvkJYucSn01+btkll+ETPNBYOzjdLqnICor4irRwiKCFAFFN8Ubw
/4dyizpAErNuU7IGd6ybQju13m/8oobzDcvdwVPaZ5xJNSI05RRxHTGbSx2e3X/t
uek9bBpaDOIOtpCPY/T4hHAslL2ysT1dONax/l2v6hVar18j9+4yr121HzXc2/JZ
6HDoeCqaVej584o2ueg0YjK68/tyu/L9ogAbhYDGJMQTK6gONwsbi6t2pYO5yudW
PHGtWQnBAAXMus2MTuzCbsbH0NbpEilEaiGiviN3Lw0=
-----END RSA PRIVATE KEY-----

Binary file not shown.

Binary file not shown.