openssl移植arm开发板
一 准备
openssl压缩包
mini244开发板
二 移植步骤
step1 解压缩
# tar zvcf openssl-1.0.0s.tar.gz
# cd openssl-1.0.0s
step2 配置
# mkdir _install
# .config no-asm shared --prefix=/home/S4-DRIVER/project/part2/openssl-1.0.0s/_install/
(根据个人设置不同目录,最好用全路径)
step3 编译
# vim Makefile 修改配置文件(gcc->arm-linux-gcc等)
#make
#make install
step4 链接库复制到开发板
三 服务器、客户端编写
先编写不加密的tcp程序。
1. 客户端
step1. SSL库初始化
放在socket创建之前
SSL_library_init();
OpenSSL_add_all_algorithms();
SSL_load_error_strings();
ctx = SSL_CTX_new(SSLv23_client_method());
step2. 创建、连接SSL
放在connect之后
ssl = SSL_new(ctx);
SSL_set_fd(ssl, sockclient);
SSL_connect(ssl);
step3. 进行数据传输
write()/read()改为SSL_write()/SSL_read()
sockclient改为ssl
step4. 关闭连接
SSL_shutdown(ssl);
SSL_free(ssl);
close(sockclient);//关闭socket
SSL_CTX_free(ctx);
2. 服务器
step1. SSL库初始化
放在socket创建之前
SSL_library_init();
OpenSSL_add_all_algorithms();
SSL_load_error_strings();
step2. 公钥、私钥以及数字证书的载入
放在SSL库初始化后
SSL_CTX_use_certificate_file(ctx,"./ca.pem",SSL_FILETYPE_PEM);//载入数字证书
SSL_CTX_use_PrivateKey_file(ctx,"./private.pem",SSL_FILETYPE_PEM);//载入私钥
SSL_CTX_check_private_key(ctx);//检测私钥
step2. 创建、连接SSL
放在accept之后
ssl = SSL_new(ctx);SSL_set_fd(ssl,new_fd); //将SSL于scoket关联
SSL_accept(ssl);
step3. 进行数据传输
write()/read()改为SSL_write()/SSL_read()
new_fd改为ssl
step4. 关闭连接
SSL_shutdown(ssl);
SSL_free(ssl);
close(new_fd);//关闭socket