OpenSSL
openSSL 不仅仅是 SSL。它可以实现消息摘要、文件的加密和解密、数字证书、数字签名和随机数字。关于 OpenSSL 库的内容非常多,远不是一篇文章可以容纳的。
OpenSSL 不只是 API,它还是一个命令行工具。命令行工具可以完成与 API 同样的工作,而且更进一步,可以测试 SSL 服务器和客户机。
服务器编写步骤
源码:新建win32空项目SSL_Server
//SSL_Server.cpp
#include <iostream>
#include <winsock2.h>
#include <openssl/rsa.h> /* SSLeay stuff */
#include <openssl/crypto.h>
#include <openssl/x509.h>
#include <openssl/pem.h>
#include <openssl/ssl.h>
#include <openssl/err.h>
// #privatekey.pem
// cmd: ..\openssl-1.0.1e\bin> openssl genrsa -out privatekey.pem 2048 --生成的是空密码
// #cacert.pem
// cmd: ..\openssl-1.0.1e\bin> openssl req -new -x509 -key privatekey.pem -out cacert.pem -days 1095 -config ..\ssl\openssl.cnf
#define CACERT "E:\\ReferData\\OpenSSL\\openssl-1.0.1e\\bin\\cacert.pem"
#define PRIKEY "E:\\ReferData\\OpenSSL\\openssl-1.0.1e\\bin\\privatekey.pem"
#define PRIKEY_CODE "women123" //----要与生成密钥一致
#define MAXBUF 1024
#define DEFPORT 7838
#pragma comment( lib, "ws2_32.lib" )
#pragma comment( lib, "libeay32.lib" )
#pragma comment( lib, "ssleay32.lib" )
/************关于本文档********************************************
*filename: ssl-server.c
*purpose: 演示利用 OpenSSL 库进行基于 IP层的 SSL 加密通讯的方法,这是服务器端例子
*wrote by: zhoulifa(zhoulifa@163.com) 周立发(http://zhoulifa.bokee.com)
Linux爱好者 Linux知识传播者 SOHO族 开发者