信息安全试验报告四文档格式.docx
- 文档编号:18602177
- 上传时间:2022-12-29
- 格式:DOCX
- 页数:11
- 大小:570.26KB
信息安全试验报告四文档格式.docx
《信息安全试验报告四文档格式.docx》由会员分享,可在线阅读,更多相关《信息安全试验报告四文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
(2)了解HTTPS的工作原理
(3)配置IIS或Apache的HTTPS功能
(4)使用OpenSSL协议开发一个安全聊天程序
硬件环境:
软件环境:
Windows7
实验步骤与内容:
(1)熟悉OpenSSL库中SSL函数使用接口
使用OpenSSL.exe(Linux中可执行文件名是openssl)可以做很多工作,是一个很好的测试或调试工具。
显示版本和编译参数:
>
opensslversion-a
查看支持的子命令:
openssl?
SSL密码组合列表:
opensslciphers
测试所有算法速度:
opensslspeed
测试RSA速度:
>
opensslspeedrsa
测试DES速度:
opensslspeeddes
产生RSA密钥对:
opensslgenrsa-out1.key1024
取出RSA公钥:
opensslrsa-in1.key-pubout-out1.pubkey
RC4加密文件:
>
opensslenc-e-rc4-in1.key-out1.key.enc
RC4解密文件:
opensslenc-d-rc4-in1.key.enc-out1.key.2
计算文件的MD5值:
opensslmd5<
1.key
计算文件的SHA1值:
opensslsha1<
openssl版本
Ssl组合密码
Openssl支持的子命令
SSL协议的主要功能即把TCP的字节流变成了一个安全的流,所有基于TCP的程序可以很容易地采用SSL协议。
主要的变化在于accept/connect()变化为使用OpenSSL提供的SSL_accept/SSL_connect(),read/write()变化为SSL_read/SSL_write()。
初始化函数库
SSL_load_error_strings();
OpenSSL_add_all_algorithms();
客户端
SSLv3_client_method();
SSL_CTX_new();
SSL_CTX_set_accepted_Cas();
//认可的CAs
SSL_CTX_use_certificate_file();
//自己的证书
SSL_CTX_use_PrivateKey_file();
//自己的私钥
SSL_CTX_check_private_key();
//检查证书-私钥一致性
SSL_CTX_set_cipher();
//自己喜欢的算法组合
服务器端
SSLv3_server_method();
(3)配置Apache的HTTPS功能
1、安装好apache环境,注意要装ssl版本的。
这里装在c:
/apache目录下。
2、生成服务器证书
1)在DOS命令下进入apache/bin目录
2)在windows环境下需先设置Openssl环境变量:
执行命令
3)生成私钥文件,这是用128位rsa算法生成密钥,得到server.key文件。
4)生成证书请求文件。
执行命令
5)签署服务器证书文件。
这是用步骤3,4的的密钥和证书请求生成证书server.crt,-days参数指明证书有效期,单位为天,x509表示生成的为X.509证书。
3、配置httpd.conf
1)打开httpd.conf文件,移除:
Includeconf/extra/httpd-ssl.conf
LoadModulessl_modulemodules/mod_ssl.so
2)打开httpd-ssl.conf,修改如下:
<
VirtualHost_default_:
443>
SSLEngineOn
SSLCertificateFile../bin/server.crt
SSLCertificateKeyFile../bin/server.key
#SSLCertificateChainFile../bin//ca.crt//暂未启用
#......
DocumentRoot"
c:
/apache/htdocs"
ServerName:
443
/VirtualHost>
1、java实现DES加密socket通信
加密:
publicstaticbyte[]encrypt(byte[]datasource){
try{
SecureRandomrandom=newSecureRandom();
DESKeySpecdesKey=newDESKeySpec(password.getBytes());
//创建一个密匙工厂,然后用它把DESKeySpec转换成
SecretKeyFactorykeyFactory=SecretKeyFactory.getInstance("
DES"
);
SecretKeysecurekey=keyFactory.generateSecret(desKey);
//Cipher对象实际完成加密操作
Ciphercipher=Cipher.getInstance("
//用密匙初始化Cipher对象
cipher.init(Cipher.ENCRYPT_MODE,securekey,random);
//现在,获取数据并加密
//正式执行加密操作
returncipher.doFinal(datasource);
}catch(Throwablee){
e.printStackTrace();
}
returnnull;
}
解密:
publicbyte[]decrypt(byte[]src)throwsException{
//DES算法要求有一个可信任的随机数源
//创建一个DESKeySpec对象
//创建一个密匙工厂
//将DESKeySpec对象转换成SecretKey对象
//Cipher对象实际完成解密操作
//用密匙初始化Cipher对象
cipher.init(Cipher.DECRYPT_MODE,securekey,random);
//真正开始解密操作
returncipher.doFinal(src);
2、客户端和服务器端代码的编写
之前OPENSSL已经在电脑上安装好了
程序分为两部分,客户端和服务器端,我们的目的是利用SSL/TLS的特性保证通信双方能够互相验证对方身份(真实性),并保证数据的完整性、私密性。
1.客户端程序的框架为:
/*生成一个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,"
Helloworld"
strlen("
HelloWorld!
"
));
2.服务端程序的框架为:
meth=SSLv23_server_method();
bind();
listen();
accept();
SSL_read(ssl,buf,sizeof(buf));
对程序来说,openssl将整个握手过程用一对函数体现,即客户端的SSL_connect和服务端的SSL_accept.而后的应用层数据交换则用SSL_read和SSL_write来完成。
直接利用公钥和私钥文件进行验证的程序截图:
运行服务器端并输入密码1234:
运行客户端:
因未安装相关证书,因此显示“Clientdoesnothavecertificate.”但程序的执行流程展示出保密通信的过程。
利用证书文件的程序执行结果:
运行服务器端:
结论分析与体会:
在这一阶段的学习中,我了解到OpenSSL是强大的套接字层密码库,囊括了主要的密码算法常用的密钥和证书封装功能及ssl协议。
HTTPS是基于ssl的安全http通道,其安全基础就是ssl。
现在信息安全在网络上的一个最主要的应用就是如何实现加密通信,我通过java写了一个通过DES加密的socket通信,保证通信过程中,不会把明文泄露。
通过openssl库,实现了openssl下的加密通信。
通过Apache开启HTTPS,我了解了如何获得密钥和证书,对证书在身份认证方面的作用有了直观的了解。
通过Openssl协议开发安全聊天程序,我也学习了如何调用Openssl库中的各个方法。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息 安全 试验报告