在iOS中创建及使用自签名SSL证书(下)

三、不要在IIS(信息服务器)中创建在自签名证书

在IIS中创建自签名证书似乎很容易——只需选择“Create Self-Signed Certificate”菜单项就行了:

不要在IIS(信息服务器)中创建在自签名证书

值得注意的是,IIS是使用计算机名作为证书中的主机名的:

IIS是使用计算机名作为证书中的主机名

而在大多数情况下,计算机名与你预想的主机名是不匹配的,这将会导致你的自签名证书不能被信任, 即使把它添加到iOS中:

自签名证书不能被信任

通过从IIS6工具箱安装和运行SelfSSL工具这个问题可以解决。不过,接下来这个使用OpenSSL的方法或许更容易。

四、使用OpenSSL,使创建自签名证书更加简单

创建自签名证书,其中一个最简单的方法就是使用OpenSSL命令行工具,这个方法适用于大多数平台,且它在Mac OSX上是默认安装的。

首先创建一个私人秘钥文件:

openssl genrsa -out myselfsigned.key 2048

然后:创建自签名证书:

openssl req -new -x509 -key myselfsigned.key -out myselfsigned.cer -days 365
-subj /CN=www.mysite.com

你可以使用任意文件名作为密钥和证书(.cer)文件的文件名。/ CN参数需根据所需主机名(例如上面例子中的https://www.mysite.com)来设置。days参数指定过期日,从今天开始算起。

如果你不想下载OpenSSL的话,有一个网站可以帮你做:Self-Signed Certificate Generator,不过,自己做当然是最安全的。

在Apache服务器上,密钥和证书文件可以直接在SSL配置中使用。而在IIS中你需要一个PFX文件,以便将证书导入到IIS的服务器证书部分。 OpenSSL也可以为你创建PFX文件:

openssl pkcs12 -export -out myselfsigned.pfx -inkey myselfsigned.key
-in myselfsigned.cer

五、创建你自己的认证机构(CA)

使用自签名证书的一个问题是,你需要在每个设备上为每个证书设置信任关系。避开这个麻烦的一个方法就是创建你自己的认证机构(CA)根证书,然后基于它来创建证书。

你可以购买一个商业CA来创建SSL证书,然而你也可以自己充当自己的CA。自己创建认证机构的优势在于:你自定义的CA证书在每个设备上只需安装一次。设备会根据你的根CA证书自动信任你发出的任何证书。

创建CA证书只需两步,首先仍是创建一个私人秘钥:

openssl genrsa -out myCA.key 2048

然后创建证书:

openssl req -x509 -new -key myCA.key -out myCA.cer -days 730
-subj /CN="My Custom CA"

上面创建的证书文件(myCA.cer)可公开分享,也可安装到iOS或其他操作系统中作为受信任根CA证书的一个嵌入。自定义的CA证书在iOS中保存在General->Settings->Profile下:

CA证书的保存

私人秘钥文件(myCA.key)只在创建新的SSL证书时才会使用。

基于这个CA证书,你可以根据需要创建任意数量的证书。这里还有一个步骤,就是创建一个CSR(客户端签名请求),正如你购买一个商业SSL证书一样。

首先创建一个私人秘钥:

openssl genrsa -out mycert1.key 2048

然后创建CSR:

openssl req -new -out mycert1.req -key mycert1.key -subj /CN=www2.mysite.com  


再使用CSR来创建证书:

openssl x509 -req -in mycert1.req -out mycert1.cer -CAkey myCA.key
-CA myCA.cer -days 365 -CAcreateserial -CAserial serial

创建的证书(mycert.cer)可以安装在Web服务器上,且能从任何安装了该CA证书的iOS设备进行访问。

猜你喜欢

转载自linj.iteye.com/blog/1992260