本文主要从申请SSL证书部分做详细介绍
一.搭建站点
二.申请SSL证书
1.生成密钥
openssl genrsa -des3 -out private.key 2048
-des3代表加上了加密,后面的2048是代表生成的密钥的位数;输入完这个命令会提示你输入:private key,自己设置一个稍微强一些的密码
2.生成证书请求
openssl req -new -key private.key -out server.csr
这一步需要填写一些信息,其中Common Name (e.g. server FQDN or YOUR name) []这个需要填写你的域名或服务器地址。我没有域名,就填写iP地址。一个证书只能绑定一个IP地址,IP地址变化了,需要重新产生证书。
3.生成服务器的私钥,去除密钥口令
openssl rsa - in private.key -out server.key
4.使用私钥为证书请求签名,生成给服务器签署的证书,格式是x509的PEM格式
openssl x509 -req - in server.csr -out server.crt -outform pem -signkey server.key -days 3650
-outform pem指定证书生成的格式,默认是pem,所以这个命令也可以写作成
sudo openssl x509 -req - in server.csr -out server.crt -signkey server.key -days 3650
到这里,你已经成功了一半,目前你需要确认的事情是:找到你创建的证书。
并且确认他们的路径,下文需要用到,我是将它放在extra内的ssl文件夹下。
5.配置Apache
1.备份httpd.conf文件
cd /private/etc/apache2/
// 需要拷贝一份,为了操作失败后退回系统原样(只需要执行一次)
sudo cp httpd.conf httpd.conf.bak
//退回系统原样配置命令(只需要执行一次)
sudo cp httpd.conf.bak httpd.conf
2.编辑httpd.conf文件
sudo vim /private/etc/apache2/httpd.conf
#
LoadModule ssl_module libexec/apache2/mod_ssl.so
LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so
Include /private/etc/apache2/extra/httpd-ssl.conf
Include /private/etc/apache2/extra/httpd-vhosts.conf
找到DocumentRoot,更改根路径(需要在用户目录下,新建Sites文件夹)
改为DocumentRoot “/Users/$yourname/Sites”
3.复制httpd-ssl.conf文件
cd /private/etc/apache2/extra/
sudo cp httpd-ssl.conf httpd-ssl.conf.bak
// 作用同上面对httpd.conf复制
4.编辑httpd-ssl.conf文件
将以下两行
SSLCertificateFile “/private/etc/apache2/server.crt”
SSLCertificateKeyFile “/private/etc/apache2/server.key”
分别修改为:(需要注意的是ssl文件夹为自己创建的,我将他放在了extra目录下)
extra/ssl/server.crt”
SSLCertificateKeyFile “/private/etc/apache2/extra/ssl/server.key”
5.复制httpd-vhosts.conf文件
sudo cp httpd-vhosts.conf httpd-vhosts.conf.bak
在文件末尾添加:
<VirtualHost *:443>
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /private/etc/apache2/extra/ssl/server.crt
SSLCertificateKeyFile /private/etc/apache2/extra/ssl/server.key
ServerName localhost
DocumentRoot "/Users/$yourname/Sites"
<Directory "/Users/$yourname/Sites">
AllowOverride All
Allow from all
Require all granted
</Directory>
</VirtualHost>
- 1
<VirtualHost *:80>
全部注释掉
3.多行注释:
- 进入命令行模式,按ctrl + v进入 visual block模式,然后按j, 或者k选中多行,把需要注释的行标记起来
- 按大写字母I,再插入注释符,例如 #
- 按esc键就会全部注释了
5.测试配置
sudo apachectl configtest
6.重启apachec服务器
sudo apachectl -k restart
这样你的服务器即增加了https的支持。可以在浏览器访问https://localhost试试。如果不行,可以在logs\test-error_log文件中看看出了什么错误。
我的出现报错信息
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using AstraZenecadeMacBook-Pro.local. Set the 'ServerName' directive globally to suppress this message
解决办法:
sudo vim /private/etc/apache2/httpd.conf
加一句 ServerName localhost:80
7. 最后,我们要将自己创建的CA证书安装到iphone上。将之前生成的server.crt文件通过邮件发送到iphone上,用自带的Mail程序(别的程序不行)打开安装即可。
8. 现在,再次访问我们之前的itms-services链接,就可以正常安装了。
9.最后一点,增加苹果对于OTA安装的说明
:http://help.apple.com/deployment/ios/#/apda0e3426d7