<?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>Behind the Code &#187; apache</title>
	<atom:link href="http://yinwm.com/tag/apache/feed/" rel="self" type="application/rss+xml" />
	<link>http://yinwm.com</link>
	<description>Thinking in Techique</description>
	<lastBuildDate>Fri, 06 Aug 2010 02:38:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>让Apache使用操作系统的用户认证</title>
		<link>http://yinwm.com/2008/09/%e8%ae%a9apache%e4%bd%bf%e7%94%a8%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e7%9a%84%e7%94%a8%e6%88%b7%e8%ae%a4%e8%af%81/</link>
		<comments>http://yinwm.com/2008/09/%e8%ae%a9apache%e4%bd%bf%e7%94%a8%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e7%9a%84%e7%94%a8%e6%88%b7%e8%ae%a4%e8%af%81/#comments</comments>
		<pubDate>Wed, 10 Sep 2008 02:59:41 +0000</pubDate>
		<dc:creator>yinwm</dc:creator>
				<category><![CDATA[技术快餐]]></category>
		<category><![CDATA[apache]]></category>

		<guid isPermaLink="false">http://yinwm.cn/wordpress/?p=53</guid>
		<description><![CDATA[Apache的认证体系很不错，但是他并不是和操作系统天然结合的。如果想要让Apache使用操作系统的用户进行认证，可以使用 mod_auth_shadow 或者 mod_authnz_external 来进行。 我使用的是 mod_auth_shadow，因为简单嘛。 下载之后自己进行编译，会有两个有用的文件，mod_auth_shadow.so 和 validate 。 配置Apache，我使用的是Apache 2.2 加载module，LoadModule auth_shadow_module /path-to/mod_auth_shadow.so 配置 VirtualHost添加如下几行       AuthName what-ever-you-like       AuthShadow on       AuthType Basic       require valid-user 还可以使用 require user/grouprequire user user1 user2require group group1 group2 这样你就可以使用了。 注意， 其中的 validate 是进行真正认证的程序， mod_auth_shadow 是会通过 pipe 和 validate 进行交互的。 validate [...]]]></description>
			<content:encoded><![CDATA[<p>Apache的认证体系很不错，但是他并不是和操作系统天然结合的。如果想要让Apache使用操作系统的用户进行认证，可以使用 <a href="http://mod-auth-shadow.sourceforge.net/" target="_blank">mod_auth_shadow</a> 或者 <a href="http://www.unixpapa.com/mod_auth_external.html" target="_blank">mod_authnz_external</a> 来进行。
<div></div>
<div>我使用的是 mod_auth_shadow，因为简单嘛。</div>
<div></div>
<div>下载之后自己进行编译，会有两个有用的文件，mod_auth_shadow.so 和 validate 。</div>
<div></div>
<div>配置Apache，我使用的是Apache 2.2</div>
<div>
<ol>
<li>加载module，<br />LoadModule auth_shadow_module /path-to/mod_auth_shadow.so</p>
</li>
<li>配置 VirtualHost<br />添加如下几行<br />       AuthName what-ever-you-like<br />       AuthShadow on<br />       AuthType Basic<br />       require valid-user
</li>
<li>还可以使用 require user/group<br />require user user1 user2<br />require group group1 group2</li>
</ol>
<div>这样你就可以使用了。</div>
<div></div>
<div>注意，</div>
<div>其中的 validate 是进行真正认证的程序， mod_auth_shadow 是会通过 pipe 和 validate 进行交互的。 validate 的存放位置必须是 /usr/local/sbin/ 并且，由于 Apache 运行之后会切换成为其他的用户，所以你还要给 validate setuid 为 root。</div>
<div>chmod u+s validate</div>
<div></div>
<div></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://yinwm.com/2008/09/%e8%ae%a9apache%e4%bd%bf%e7%94%a8%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e7%9a%84%e7%94%a8%e6%88%b7%e8%ae%a4%e8%af%81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>网络安全通讯（3）&#8212;-相信你的客户</title>
		<link>http://yinwm.com/2008/03/%e7%bd%91%e7%bb%9c%e5%ae%89%e5%85%a8%e9%80%9a%e8%ae%af%ef%bc%883%ef%bc%89-%e7%9b%b8%e4%bf%a1%e4%bd%a0%e7%9a%84%e5%ae%a2%e6%88%b7/</link>
		<comments>http://yinwm.com/2008/03/%e7%bd%91%e7%bb%9c%e5%ae%89%e5%85%a8%e9%80%9a%e8%ae%af%ef%bc%883%ef%bc%89-%e7%9b%b8%e4%bf%a1%e4%bd%a0%e7%9a%84%e5%ae%a2%e6%88%b7/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 00:54:04 +0000</pubDate>
		<dc:creator>yinwm</dc:creator>
				<category><![CDATA[安全]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[ca]]></category>
		<category><![CDATA[ssl]]></category>

		<guid isPermaLink="false">http://yinwm.cn/wordpress/?p=40</guid>
		<description><![CDATA[在前两篇文章中网络安全通讯（1）&#8212;-给你的Webserver启用SSL网络安全通讯（2）&#8212;-让别人相信你的服务器我们探讨了如何让你的客户相信你的服务器，这篇文章我们探讨一下你如何去相信你的客户。 在很多场景下，我们是需要关心客户的身份的，一个很安全的做法就是给你的客户发放一个签名的证书，让你的客户拿着证书来，这时候你验证了证书，你也就相信了你的客户。我们可以使用Apache提供的客户端验证（Client Certificate）功能。 生成客户端的私钥和CSR文件openssl genrsa -out client.key 1024openssl req -new -key client.key -out client.csr 用前面我们自己的CA签发客户的证书openssl x509 -req -days 360 -in client.csr -CA ca.crt -CAkey ca.key -CAserial ca.srl -out client.crt 此时客户端的证书已经制作完毕（和制作Server的一样），但是我们的浏览器需要pkcs12格式的文件，所以我们需要签一个pkcs12格式的文件openssl pkcs12 -export -clcerts -in client.crt -inkey client.key&#160;-out client.p12 -name your_certificate_client_name这里需要你的client的CSR文件设置的密码，还有your_certificate_client_name替换成你client的名字 打开Apache需要客户验证的设置SSLVerifyClient requireSSLVerifyDepth&#160; 1SSLCACertificateFile &#8220;/path_to/ca.crt&#8221; 重新启动apache，尝试一下访问，此时访问并不成功Firefox会包一个-12227的错误，IE干脆显示不出来，说明客户端验证没有通过 把生成的客户端pkcs12文件导入到浏览器，Firefox Tools-&#62;Options-&#62;Advanced-&#62;Encryption-&#62;View Certificates-&#62;Your Certificates-&#62;ImportIE Tools-&#62;Internet Options-&#62;Content-&#62;Certificates-&#62;Personal-&#62;Import 再次访问服务器，It works. 此时你的客户端（也就是浏览器）可以通过服务器的验证了。你也可以相信你的客户了。]]></description>
			<content:encoded><![CDATA[<p>在前两篇文章中<br /><a href="http://yinwm.cn/blog/2008/03/webserver-with-ssl.html" target="_blank">网络安全通讯（1）&#8212;-给你的Webserver启用SSL<br /></a><a href="http://yinwm.cn/blog/2008/03/let-others-trust-your-server.html" target="_blank">网络安全通讯（2）&#8212;-让别人相信你的服务器</a><br />我们探讨了如何让你的客户相信你的服务器，这篇文章我们探讨一下你如何去相信你的客户。</p>
<p>在很多场景下，我们是需要关心客户的身份的，一个很安全的做法就是给你的客户发放一个签名的证书，让你的客户拿着证书来，这时候你验证了证书，你也就相信了你的客户。我们可以使用Apache提供的客户端验证（<a href="http://en.wikipedia.org/wiki/Public_key_certificate" target="_blank">Client Certificate</a>）功能。</p>
<ol>
<li>生成客户端的私钥和CSR文件<br />openssl genrsa -out client.key 1024<br />openssl req -new -key client.key -out client.csr</li>
<li>用前面我们自己的CA签发客户的证书<br />openssl x509 -req -days 360 -in client.csr -CA ca.crt -CAkey ca.key -CAserial ca.srl -out client.crt</li>
<li>此时客户端的证书已经制作完毕（和制作Server的一样），但是我们的浏览器需要pkcs12格式的文件，所以我们需要签一个pkcs12格式的文件<br />openssl pkcs12 -export -clcerts -in client.crt -inkey client.key&nbsp;-out client.p12 -name your_certificate_client_name<br />这里需要你的client的CSR文件设置的密码，还有your_certificate_client_name替换成你client的名字</li>
<li>打开Apache需要客户验证的设置<br />SSLVerifyClient require<br />SSLVerifyDepth&nbsp; 1<br />SSLCACertificateFile &#8220;/path_to/ca.crt&#8221;</li>
<li>重新启动apache，尝试一下访问，此时访问并不成功Firefox会包一个-12227的错误，IE干脆显示不出来，说明客户端验证没有通过</li>
<li>把生成的客户端pkcs12文件导入到浏览器，<br />Firefox Tools-&gt;Options-&gt;Advanced-&gt;Encryption-&gt;View Certificates-&gt;Your Certificates-&gt;Import<br />IE Tools-&gt;Internet Options-&gt;Content-&gt;Certificates-&gt;Personal-&gt;Import</li>
<li>再次访问服务器，It works.</li>
</ol>
<p>此时你的客户端（也就是浏览器）可以通过服务器的验证了。你也可以相信你的客户了。</p>
]]></content:encoded>
			<wfw:commentRss>http://yinwm.com/2008/03/%e7%bd%91%e7%bb%9c%e5%ae%89%e5%85%a8%e9%80%9a%e8%ae%af%ef%bc%883%ef%bc%89-%e7%9b%b8%e4%bf%a1%e4%bd%a0%e7%9a%84%e5%ae%a2%e6%88%b7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>网络安全通讯（2）&#8212;-让别人相信你的服务器</title>
		<link>http://yinwm.com/2008/03/%e7%bd%91%e7%bb%9c%e5%ae%89%e5%85%a8%e9%80%9a%e8%ae%af%ef%bc%882%ef%bc%89-%e8%ae%a9%e5%88%ab%e4%ba%ba%e7%9b%b8%e4%bf%a1%e4%bd%a0%e7%9a%84%e6%9c%8d%e5%8a%a1%e5%99%a8/</link>
		<comments>http://yinwm.com/2008/03/%e7%bd%91%e7%bb%9c%e5%ae%89%e5%85%a8%e9%80%9a%e8%ae%af%ef%bc%882%ef%bc%89-%e8%ae%a9%e5%88%ab%e4%ba%ba%e7%9b%b8%e4%bf%a1%e4%bd%a0%e7%9a%84%e6%9c%8d%e5%8a%a1%e5%99%a8/#comments</comments>
		<pubDate>Mon, 03 Mar 2008 08:00:59 +0000</pubDate>
		<dc:creator>yinwm</dc:creator>
				<category><![CDATA[安全]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[ca]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[服务器验证]]></category>

		<guid isPermaLink="false">http://yinwm.cn/wordpress/?p=39</guid>
		<description><![CDATA[上文（网络安全通讯（1）&#8212;-给你的Webserver启用SSL）我们讲解了我们如何能够保证我们的服务器和客户端之间的安全通讯。 但是有些时候，用户凭什么相信你呢，你总得想办法证明你的身份吧。该CA（Certificate Authority）出场了，CA是一个大家都相信的第三方，因为你的客户相信CA，而CA又说你（你的服务器）是可以被信任的，那么你的客户就会相信你。所以刚才那个自签名的证书可是不行，你需要ca用他的key给你签个名字，这样别人才相信不是。Q：我们不认识CA怎么办？A：去公认的CA申请啊！Q：难道就我们自己用也要申请？A：好吧，我们可以自己假装自己就是CA，只要大家相信你就好。 我们开始假装CA，创建自己的CA。 &#160;&#160; 1. 建立CA私钥&#160;&#160;&#160;&#160;&#160; openssl genrsa -out ca.key 1024&#160;&#160; 2. 建立自己的CRT文件&#160;&#160;&#160;&#160;&#160; openssl req -new -x509 -key ca.key -out ca.crt -days 3600&#160;&#160; 3. 用自己的CA文件签署刚刚的服务器CSR，生成服务器证书&#160;&#160;&#160;&#160;&#160; openssl x509 -req -days 360 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt&#160;&#160;&#160;&#160;&#160; 注意，这里的参数-CAcreateserial会建立一个serial文件ca.srl，用来记录ca的serial number，如果你已经有了这个文件，那么请使用-CAserial serial_file替换-CAcreateserial参数。&#160;&#160; 4. 使用新的server.key和server.crt文件，重启apache，再次访问。看一下你的浏览器说什么，是不是此时的Issuer已经是你自己的CA了？ 如果你是使用第三方的CA，你就需要把你的server.csr发给他们，然后他们会签一个证书发挥给你的。 此时我们的客户已经相信了你的服务器了。好了本本没电了，明天我们再讨论如何相信你的客户吧。]]></description>
			<content:encoded><![CDATA[<p>上文（<a href="http://yinwm.cn/blog/2008/03/webserver-with-ssl.html" target="_blank">网络安全通讯（1）&#8212;-给你的Webserver启用SSL</a>）我们讲解了我们如何能够保证我们的服务器和客户端之间的安全通讯。</p>
<p>但是有些时候，用户凭什么相信你呢，你总得想办法证明你的身份吧。该CA（<a href="http://en.wikipedia.org/wiki/Certificate_authority" target="_blank">Certificate Authority</a>）出场了，CA是一个大家都相信的第三方，因为你的客户相信CA，而CA又说你（你的服务器）是可以被信任的，那么你的客户就会相信你。所以刚才那个自签名的证书可是不行，你需要ca用他的key给你签个名字，这样别人才相信不是。<br />Q：我们不认识CA怎么办？<br />A：去公认的CA申请啊！<br />Q：难道就我们自己用也要申请？<br />A：好吧，我们可以自己假装自己就是CA，只要大家相信你就好。</p>
<p>我们开始假装CA，创建自己的CA。</p>
<p>&nbsp;&nbsp; 1. 建立CA私钥<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; openssl genrsa -out ca.key 1024<br />&nbsp;&nbsp; 2. 建立自己的CRT文件<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; openssl req -new -x509 -key ca.key -out ca.crt -days 3600<br />&nbsp;&nbsp; 3. 用自己的CA文件签署刚刚的服务器CSR，生成服务器证书<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; openssl x509 -req -days 360 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 注意，这里的参数-CAcreateserial会建立一个serial文件ca.srl，用来记录ca的serial number，如果你已经有了这个文件，那么请使用-CAserial serial_file替换-CAcreateserial参数。<br />&nbsp;&nbsp; 4. 使用新的server.key和server.crt文件，重启apache，再次访问。看一下你的浏览器说什么，是不是此时的Issuer已经是你自己的CA了？</p>
<p>如果你是使用第三方的CA，你就需要把你的server.csr发给他们，然后他们会签一个证书发挥给你的。</p>
<p>此时我们的客户已经相信了你的服务器了。<br />好了本本没电了，明天我们再讨论如何相信你的客户吧。</p>
]]></content:encoded>
			<wfw:commentRss>http://yinwm.com/2008/03/%e7%bd%91%e7%bb%9c%e5%ae%89%e5%85%a8%e9%80%9a%e8%ae%af%ef%bc%882%ef%bc%89-%e8%ae%a9%e5%88%ab%e4%ba%ba%e7%9b%b8%e4%bf%a1%e4%bd%a0%e7%9a%84%e6%9c%8d%e5%8a%a1%e5%99%a8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>网络安全通讯（1）&#8212;-给你的Webserver启用SSL</title>
		<link>http://yinwm.com/2008/03/%e7%bd%91%e7%bb%9c%e5%ae%89%e5%85%a8%e9%80%9a%e8%ae%af%ef%bc%881%ef%bc%89-%e7%bb%99%e4%bd%a0%e7%9a%84webserver%e5%90%af%e7%94%a8ssl/</link>
		<comments>http://yinwm.com/2008/03/%e7%bd%91%e7%bb%9c%e5%ae%89%e5%85%a8%e9%80%9a%e8%ae%af%ef%bc%881%ef%bc%89-%e7%bb%99%e4%bd%a0%e7%9a%84webserver%e5%90%af%e7%94%a8ssl/#comments</comments>
		<pubDate>Mon, 03 Mar 2008 06:07:05 +0000</pubDate>
		<dc:creator>yinwm</dc:creator>
				<category><![CDATA[安全]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[ssl]]></category>

		<guid isPermaLink="false">http://yinwm.cn/wordpress/?p=38</guid>
		<description><![CDATA[互联网很危险，你还是回火星吧。好吧，我们还有SSL，你可以等一下了。 先说一下这里面用到的库OpenSSL 0.9.8gApache Httpd 2.2 SSL是一个可以保证你的通讯安全的机制，采用公钥私钥的非对加密机制，具体机制我就不说了，网上一抓一大把。你可以使用openssl建立自己的密钥，并使用在Apache Webserver上，让你的服务器支持https。 建立你自己的服务器私钥，一个1024位的就够了openssl genrsa -des3 -out server.key 1024 生成CSR文件，Certificate Signing Requestopenssl req -new -key server.key -out server.csr 生成证书CRT文件，X509协议openssl x509 -req -in server.csr -signkey server.key -out server.crt注意，这是一个自签名的证书 修改你apache的ssl配置，SSLCertificateFile &#8220;/path-to/server.crt&#8221;SSLCertificateKeyFile &#8220;/path-to/server.key&#8221; 启动你的apache，使用https访问试试看，是不是要你确认是否允许证书通过 这时候，你的服务器已经支持SSL了，刚才浏览器问你是否通过你服务器提供的证书是表示客户端（浏览器）信任了你的服务器，这里也就是服务器认证。你们之间的通讯已经是加密的了。]]></description>
			<content:encoded><![CDATA[<p>互联网很危险，你还是回火星吧。<br />好吧，我们还有SSL，你可以等一下了。</p>
<p>先说一下这里面用到的库<br />OpenSSL 0.9.8g<br />Apache Httpd 2.2</p>
<p><a target="_blank" href="http://en.wikipedia.org/wiki/Secure_Sockets_Layer">SSL</a>是一个可以保证你的通讯安全的机制，采用公钥私钥的非对加密机制，具体机制我就不说了，网上一抓一大把。<br />你可以使用openssl建立自己的密钥，并使用在Apache Webserver上，让你的服务器支持https。
<ol>
<li>建立你自己的服务器私钥，一个1024位的就够了<br />openssl genrsa -des3 -out server.key 1024</li>
<li><span class="Body-0020Text-002cBody-0020Text-0020Char--Char" style="font-weight: bold;"></span><span class="Body-0020Text-002cBody-0020Text-0020Char--Char" style="font-weight: bold;"></span>生成CSR文件，<a target="_blank" href="http://en.wikipedia.org/wiki/Certificate_signing_request">Certificate Signing Request</a><br />openssl req -new -key server.key -out server.csr</li>
<li>生成证书CRT文件，X509协议<br />openssl x509 -req -in server.csr -signkey server.key -out server.crt<br />注意，这是一个自签名的证书</li>
<li>修改你apache的ssl配置，<br />SSLCertificateFile &#8220;/path-to/server.crt&#8221;<br />SSLCertificateKeyFile &#8220;/path-to/server.key&#8221;</li>
<li>启动你的apache，使用https访问试试看，是不是要你确认是否允许证书通过</li>
</ol>
<p>这时候，你的服务器已经支持SSL了，刚才浏览器问你是否通过你服务器提供的证书是表示客户端（浏览器）信任了你的服务器，这里也就是服务器认证。你们之间的通讯已经是加密的了。</p>
]]></content:encoded>
			<wfw:commentRss>http://yinwm.com/2008/03/%e7%bd%91%e7%bb%9c%e5%ae%89%e5%85%a8%e9%80%9a%e8%ae%af%ef%bc%881%ef%bc%89-%e7%bb%99%e4%bd%a0%e7%9a%84webserver%e5%90%af%e7%94%a8ssl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
