Apache如何配置SSL

openssl如此强大,以至于不得不学学他是怎么生成的公钥私钥和证书等等,顺便也学学配置原理,:-)

首先是介绍:

Overview:

传统的网络传输方法都是传输不加密的信息,这样的话,如果有人利用网络嗅探工具很容易获取传输的信息,secure socket layer被用来解决这个问题,SSL利用非对称加密,也叫public key cryptography(PKI),整个过程会产生2个key,一个公钥一个私钥,数据被公钥加密只能由对应的私钥解密,在这里还需要一个CA(验证中心),他的作用是验证公钥的合法性,要不然我们连和谁通信都不知道。


Step1:

生成私钥

openssl genrsa -des3 -out server.key 1024

期间会让你输入密钥。我们打开server.key可以看到


全是可识别的字符,原因是本来生成的1024私钥是不可识别的,这里用我们上面输入的密钥对他进行了3-DES加密,所以生成了可识别的字符串了。

Step2

生成证书签名请求CSR(certificate signed request)

首先解释一下什么叫证书签名请求,一个证书签名请求由一个可区分的名字、一个公钥和一个可选的属性集,再加上认证请求实体对上述信息的签名共同组成。一旦一个私钥生成了,证书签名请求就可以生成了,CSR被发送到Certificate Authority,也就是CA,CA对这个CSR进行身份验证。

在生成CSR的时候,你需要提供一些个人信息,命令如下:

openssl req -new -key server.key -out server.csr

效果如下:



server.csr生成了。我们用View File打开,可以看到一些信息。如下:


说明这是一个证书请求。点开详细信息查看,


Step 3 

移除私钥的加密密钥

上面我们生成的私钥,被我们用3-DES加密了,由于Apache在启动时每次都要求输入这个加密密钥,显然比较麻烦,我们移除这个密钥。移除之后私钥就是明文存储了,必须保证不能让别人获得。移除方法如下:

cp server.key server.key.org
openssl rsa -in server.key.org -out server.key

如下图:


生成了server.key私钥文件。

Step 4

生成一个自签名文件

这里我们准备自签名,我们肯定不准备把签名发给CA签名,这种签名方法会在浏览器中报警告,生成一个365天的签名,命令如下:

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

效果如下:


用server.key对server.csr签名,生成了server.crt文件。

用View File打开


证书已经弄好,然后就是部署了

Step 5

把生成的crt和key拷贝到对应位置

cp server.crt /usr/local/apache/conf/ssl.crt
cp server.key /usr/local/apache/conf/ssl.key
Step 6

配置apache的default-ssl.conf文件

里面加入

SSLEngine on
SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/server.key
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
CustomLog logs/ssl_request_log \
   "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

apache的/etc/apache2/sites-available/000-default.conf下面增加443选项

<VirtualHost *:443>
	#ServerAdmin webmaster@localhost
	ServerName 127.0.0.1:443
	DocumentRoot "/home/ss/workspace/www"

	LogLevel info ssl:warn

	ErrorLog ${APACHE_LOG_DIR}/ssl_error.log
	CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined

	SSLEngine on
	SSLCertificateFile /etc/apache2/ssl.crt
	SSLCertificateKeyFile /etc/apache2/ssl.key

	<Proxy *>
	    Order deny,allow
	    Allow from all
	</Proxy>
	<Location "/rustezemyss/web">
		ProxyPass  "http://127.0.0.1:8080/rustezemyss/web"
	</Location>
	<Location "/rustezemyss/androidphone">
		ProxyPass  "ws://127.0.0.1:8080/rustezemyss/androidphone"
		ProxyPassReverse "ws://127.0.0.1:8080/rustezemyss/androidphone"
	</Location>

	<Location "/webchat">
		ProxyPass  "ws://127.0.0.1:7272"
		ProxyPassReverse "ws://127.0.0.1:7272"
	</Location>

</VirtualHost>

Step 7

重启apache


成功!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值