<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>可可熊的窝 &#187; openssl</title>
	<atom:link href="http://cocobear.info/blog/tag/openssl/feed/" rel="self" type="application/rss+xml" />
	<link>http://cocobear.info/blog</link>
	<description>K.I.S.S</description>
	<lastBuildDate>Sat, 10 Dec 2011 16:11:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>PHP中使用openssl</title>
		<link>http://cocobear.info/blog/2009/06/17/use-openssl-in-php/</link>
		<comments>http://cocobear.info/blog/2009/06/17/use-openssl-in-php/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 07:23:36 +0000</pubDate>
		<dc:creator>可可熊</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[openssl]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://cocobear.info/blog/?p=716</guid>
		<description><![CDATA[服务器端要对客户端POST 上来的签名后的数据进行验证，本来想着用Python调用openssl命令行来实现，不过没有找到相关的命令，后来找了下PHP的openssl的封装，果然有的：http://php.chinaunix.net/manual/zh/ref.openssl.php 封装的函数也比较好用。（我还想着要是实在不行就用C语言写个CGI来调用openssl 了） 上面的代码中，首先从客户的证书中获取公钥，然后使用openssl_verify($data, $signature, $pubkeyid);对签名后的数据($signature)进行验证,$date为原始数据，$pubkeyid是从证书中读出的公钥，该函数还可以使用第四个参数，设置一个使用的hash算法，默认使用的是sha1。 被注释掉的代码是使用私钥对数据进行签名。 代码中第一行是获取原始的POST数据内容，也就是获取标准输入的数据。如果是Python写CGI的话可以使用: data = sys.stdin.read() 代码见：http://code.google.com/p/cocobear/source/browse/trunk/openssl/openssl_php.php 在wordpress日志里加PHP代码一直出错，没办法，只能放在别的地方。]]></description>
		<wfw:commentRss>http://cocobear.info/blog/2009/06/17/use-openssl-in-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Openssl建立SSL连接分析</title>
		<link>http://cocobear.info/blog/2009/05/22/openssl-connect/</link>
		<comments>http://cocobear.info/blog/2009/05/22/openssl-connect/#comments</comments>
		<pubDate>Fri, 22 May 2009 02:29:15 +0000</pubDate>
		<dc:creator>可可熊</dc:creator>
				<category><![CDATA[安全相关]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[openssl]]></category>

		<guid isPermaLink="false">http://cocobear.info/blog/?p=659</guid>
		<description><![CDATA[SSL_library_init(); SSL的初始化过程，只是添加一些算法，使用EVP_add_cipher函数。 ssl_method = SSLv3_client_method(); 设置使用的SSL版本，SSLv3_client_method 函数的定义是通过IMPLEMENT_ssl3_meth_func(ssl/s3_clnt.c)这个宏来实现，而这个宏在ssl/ssl_locl.h 文件中实现，使用了粘贴宏的技巧来根据传入不同的函数名生成不同的函数定义。 SSLv3_client_method 定义了一组关于SSL V3的操作函数： static SSL_METHOD func_name##_data= { SSL3_VERSION, ssl3_new, ssl3_clear, ssl3_free, s_accept, s_connect, ssl3_read, ssl3_peek, ssl3_write, ssl3_shutdown, ssl3_renegotiate, ssl3_renegotiate_check, ssl3_get_message, ssl3_read_bytes, ssl3_write_bytes, ssl3_dispatch_alert, ssl3_ctrl, ssl3_ctx_ctrl, ssl3_get_cipher_by_char, ssl3_put_cipher_by_char, ssl3_pending, ssl3_num_ciphers, ssl3_get_cipher, s_get_meth, ssl3_default_timeout, &#38;SSLv3_enc_data, ssl_undefined_void_function, ssl3_callback_ctrl, ssl3_ctx_callback_ctrl, }; SSL_CTX = SSL_CTX_new(ssl_method); 创建SSL_CTX这个结构体，进行初始化赋值操作，设置一些参数，使用默认的engine。openssl的engine是对基础的加密算法进行了封装，这样可以方便的对底层的加密算法进行替换，例如你可能使用硬件加密来替换掉openssl的软实现加密算法，而你所做的只是按照engine的接口实现相关的算法，然后设置engine的名字。例如U-KEY的RSA签名必须在硬件中完成，这时你就可以通过engine调用CSP来实现签名算法。 SSL_CTX_use_certificate_file(SSL_CTX,&#8221;client.cer&#8221;,SSL_FILETYPE_PEM) 设置客户端使用的证书，从文件中读取BASE64(SSL_FILETYPE_PEM这个参数指定)编码的证书，然后转换为openssl 的X509结构，提取公钥，设置SSL_CTX相关的结构。 SSL_CTX_use_PrivateKey_file(SSL_CTX, &#8220;client.key&#8221;, SSL_FILETYPE_PEM) [...]]]></description>
		<wfw:commentRss>http://cocobear.info/blog/2009/05/22/openssl-connect/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>SSL SSL2.0 SSL3.0 TLS 1.0</title>
		<link>http://cocobear.info/blog/2009/05/08/ssl-ssl20-ssl30-tls-10/</link>
		<comments>http://cocobear.info/blog/2009/05/08/ssl-ssl20-ssl30-tls-10/#comments</comments>
		<pubDate>Fri, 08 May 2009 12:54:39 +0000</pubDate>
		<dc:creator>可可熊</dc:creator>
				<category><![CDATA[互联网]]></category>
		<category><![CDATA[openssl]]></category>
		<category><![CDATA[ssl]]></category>

		<guid isPermaLink="false">http://cocobear.info/blog/?p=641</guid>
		<description><![CDATA[SSL是用于网络安全传输的协议，在TCP之上，HTTP之下。以前对标题里面这几个有点分不清楚，今天花了点时间整理下概念。 SSL为(Secure Sockets Layer)的缩写，是网景公司为网络安全传输制定的一套标准，SSL1.0没有公开发布过，所以SSL1.0可以无视之。SSL2.0在1995年发布，不过因为有很多的安全漏洞，所以SSL3.0很快在1996年就出现了。不过主流的浏览器在很长的一段时间内都在支持SSL2.0,IE6默认是支持SSL2.0的(IE7中SSL2.0被禁用了)，Firefox2以后禁用了SSl2.0,Opera在8.5以后也禁用了SSL2.0。 IETF在1999年的时候以SSL3.0为基础，制定了TLS(Transport Layer Security) 1.0，RFC2246对TLS进行了详细的描述。TLS 1.0在框架上完全使用SSL3.0，只是在一些细节上有差异，比如采用的算法集，随机函数的产生，这里有一篇文章对TLS与SSL3.0区别进行了详细的描述。 由于TLS基本上是对SSL3.0的补充，因此在很多地方SSL3.0 TLS这两个名词被混合使用。 TLS也在更新，不过变化不大，RFC4346对TLS 1.1进行了详细描述。 TLS最新版本为1.2，相关的RFC为RFC5246。 目前国内网站使用的HTTPS其本上都是基于SSL3.0的。 以下是wireshark抓包一个SSL3.0的通信过程： client &#8212;&#8212;&#8212;&#8212;->server [Client Hello] server &#8212;&#8212;&#8212;&#8212;>client [Server Hello] server &#8212;&#8212;&#8212;&#8212;>client [Certificate] client &#8212;&#8212;&#8212;&#8212;->server [Client Key Exchange , Change Cipher Spec, Encrypted Handshake Message server ------------->client [Change Cipher Spec, Encrypted Handshake Message client -------------->server [Application Data]]]></description>
		<wfw:commentRss>http://cocobear.info/blog/2009/05/08/ssl-ssl20-ssl30-tls-10/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Apache使用Openssl实现HTTPS访问</title>
		<link>http://cocobear.info/blog/2009/05/08/use-openssl-with-apache/</link>
		<comments>http://cocobear.info/blog/2009/05/08/use-openssl-with-apache/#comments</comments>
		<pubDate>Fri, 08 May 2009 04:35:29 +0000</pubDate>
		<dc:creator>可可熊</dc:creator>
				<category><![CDATA[互联网]]></category>
		<category><![CDATA[openssl]]></category>

		<guid isPermaLink="false">http://cocobear.info/blog/?p=638</guid>
		<description><![CDATA[首先确认apache支持mod_ssl， openssl也正确安装。 Fedora 8中apache关于ssl的配置文件在/etc/httpd/conf.d/ssl.conf文件中，使用SSLEngine on选项来开启HTTPS的支持，apache默认会使用一个自带的localhost 的证书来进行HTTPS连接。 接下来我们使用openssl生成自己的证书进行HTTPS连接： mkdir /etc/httpd/conf.d/ssl.crt/ cd /etc/httpd/conf.d/ssl.crt (1) 生成服务器的私钥： openssl rsa -in server.key -out server.key openssl req -new -key server.key -out server.csr 生成Certificate Signing Request（CSR）,生成的csr文件交给CA签名后形成服务端自己的证书.屏幕上将有提示,依照其指示一步一步输入要求的个人信息即可. (2) 对客户端也使用同样的方式： openssl genrsa -out client.key 1024 openssl req -new -key client.key -out client.csr (3) 生成CA中心的私钥： openssl genrsa -out ca.key 1024 生成X509格式的CA证书： openssl req -new -x509 [...]]]></description>
		<wfw:commentRss>http://cocobear.info/blog/2009/05/08/use-openssl-with-apache/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

