<?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>Distinguished Names &#8211; bhzhuOS爱好者(原StartOS爱好者)</title>
	<atom:link href="https://www.bhzhu203.com/tag/distinguished-names/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bhzhu203.com</link>
	<description>QQ群号125732839</description>
	<lastBuildDate>Thu, 28 Apr 2016 08:23:35 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5.7</generator>
	<item>
		<title>SDB:Setup Ipsec VPN with Strongswan</title>
		<link>https://www.bhzhu203.com/2016/04/28/sdbsetup-ipsec-vpn-with-strongswan/</link>
		
		<dc:creator><![CDATA[bhzhu203]]></dc:creator>
		<pubDate>Thu, 28 Apr 2016 08:23:35 +0000</pubDate>
				<category><![CDATA[linux知识]]></category>
		<category><![CDATA[CN]]></category>
		<category><![CDATA[Distinguished Names]]></category>
		<guid isPermaLink="false">http://www.bhzhu203.com/?p=251</guid>

					<description><![CDATA[生成证书（可选） 注意 如果不生成证书，后面配置部分的配置中用 pubkey 认 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>生成证书（可选）<br />
注意 如果不生成证书，后面配置部分的配置中用 pubkey 认证的 conn 都不能用，甚至不能保留在配置中。</p>
<p>每一个完整的 ssl 证书都有一个公钥和一个私钥，它们可以在一起也可以分开放（当然如果你要在网络上传输，肯定只能用公钥）。公钥是在网络上传输的，而私钥是藏好用来和接收到的公钥配对的（因此私钥里也有整个公钥，用来配对）。<br />
生成 CA 证书</p>
<p>生成一个私钥：</p>
<p>ipsec pki &#8211;gen &#8211;outform pem &gt; ca.pem</p>
<p>没什么好解释的，&#8211;outform 一共有三个格式可选，但是另外两个是 der 和 pgp&#8230;</p>
<p>基于这个私钥自己签一个 CA 证书：</p>
<p>ipsec pki &#8211;self &#8211;in ca.pem &#8211;dn &#8220;C=CN, O=strongSwan, CN=strongSwan CA&#8221; &#8211;ca &#8211;outform pem &gt; ca.cert.pem</p>
<p>这里 &#8211;self 表示自签证书，&#8211;in 是输入的私钥，&#8211;dn 是判别名，&#8211;ca 表示生成 CA，其它同上。这里需要解释下判别名：</p>
<p>C 表示国家名，同样还有 ST 州/省名，L 地区名，STREET（全大写） 街道名。<br />
O 表示组织名。<br />
CN 为通用名。</p>
<p>具体见微软的文档：Distinguished Names<br />
生成服务器证书</p>
<p>同样生成私钥：</p>
<p>ipsec pki &#8211;gen &#8211;outform pem &gt; server.pem</p>
<p>用我们刚才自签的 CA 证书给自己发一个服务器证书：</p>
<p>ipsec pki &#8211;pub &#8211;in server.pem | ipsec pki &#8211;issue &#8211;cacert ca.cert.pem<br />
&#8211;cakey ca.pem &#8211;dn &#8220;C=CN, O=strongSwan, CN=forum.suse.org.cn&#8221;<br />
&#8211;san=&#8221;forum.suse.org.cn&#8221; &#8211;flag serverAuth &#8211;flag ikeIntermediate<br />
&#8211;outform pem &gt; server.cert.pem</p>
<p>这条命令的意思解释下：</p>
<p>ipsec pki &#8211;pub &#8211;in server.pem</p>
<p>是从我们刚生成的私钥里把公钥提取出来，然后用公钥去参与后面的服务器证书签发（这个是 VPN 连接时候要用的，你不想把私钥也给它吧？那样跟没签证书一样&#8230;）。</p>
<p>&#8211;issue, &#8211;cacert 和 &#8211;cakey 就是表明要用刚才自签的 CA 证书来签这个服务器证书。</p>
<p>&#8211;dn, &#8211;san，&#8211;flag 是一些客户端方面的特殊要求：</p>
<p>iOS 客户端要求 CN 也就是通用名必须是你的服务器的 URL 或 IP 地址;<br />
Windows 7 不但要求了上面，还要求必须显式说明这个服务器证书的用途（用于与服务器进行认证），&#8211;flag serverAuth;<br />
非 iOS 的 Mac OS X 要求了“IP 安全网络密钥互换居间（IP Security IKE Intermediate）”这种增强型密钥用法（EKU），&#8211;flag ikdeIntermediate;<br />
Android 和 iOS 都要求服务器别名（serverAltName）就是服务器的 URL 或 IP 地址，&#8211;san。</p>
<p>生成客户端证书</p>
<p>依然是生成私钥：</p>
<p>ipsec pki &#8211;gen &#8211;outform pem &gt; client.pem</p>
<p>然后用刚才自签的 CA 证书来签客户端证书：</p>
<p>ipsec pki &#8211;pub &#8211;in client.pem | ipsec pki &#8211;issue &#8211;cacert caCert.pem<br />
&#8211;cakey caKey.pem &#8211;dn &#8220;C=CN, O=strongSwan, CN=client&#8221;<br />
&#8211;outform pem &gt; client.cert.pem</p>
<p>这时命令行会提示你输入两遍密码，这个就是你的客户端证书密码。</p>
<p>看懂了服务器的，客户端的也就不难理解了。除了没有那一堆特殊要求别的都一样。</p>
<p>客户端证书可以每个客户端签一个，也可以让它们公用一个。是否多签看用途，一般用于区分设备（计费是不用这样的，是用账户来区分的）。<br />
生成 pkcs12 证书（可选）</p>
<p>你可能还想生成一个可以直接导入的 pkcs12 证书（用于手机，诺基亚没这东西还不行）：</p>
<p>openssl pkcs12 -export -inkey client.pem -in client.cert.pem -name &#8220;client&#8221;<br />
-certfile ca.cert.pem -caname &#8220;strongSwan CA&#8221; -out client.cert.p12</p>
<p>原文地址：https://zh.opensuse.org/SDB:Setup_Ipsec_VPN_with_Strongswan</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
