最近遇到一个问题,顾客需要网站后台加密,用https访问。当时认为很简单,就直接登入joomla的管理后台,在服务器的设置选项中将强制 SSL设置为“只是后台管理”。可是保存之后。发现出现页面无法找到。最后只得通过修改joomla根目录下的configuration.php文件。
public $force_ssl = '1'; =>public $force_ssl = '0';网站才恢复到原来的状态。这个问题该怎么解决呢?
很显然joomla的强制SSL不是这样简单的使用的。
查了一些资料,大致的意思是说https是安全的http数据传输,他的安全性主要是基于SSL的。如果要启用SSL通道,那么需要使用SSL证书来启用https协议。
在 网上找了一篇文章,大意思是怎样在Linux Apche服务器上创建自签名的SSL证书。原文地址:http://www.linux.com/learn/tutorials/392099- creating-self-signed-ssl-certificates-for-apache-on-linux
大致需要经过几个过程:
1 ,安装SSL模块
执行命令:yum install mod_ssl
2, 安装openssl
执行命令:yum install openssl
3, 产生CSR
执行命令:sudo openssl req -new > new.ssl.csr
执行这个命命令需要你输入一个密码,你要记住这个密码。随后的输入根据自己的情况随便输入就行了。注意最后两行
A challenge password []:Leave Blank
An optional company name []:Optional
维持空就行了。不然每次启动apache服务器都需要输出密码
4,产生证书
sudo openssl rsa -in privkey.pem -out new.cert.key
sudo openssl x509 -in new.ssl.csr -out new.cert.cert -req -signkey new.cert.key -days 100
5, 拷贝证书到/etc/ssl目录,使得Apache可以找到他们。
sudo cp new.cert.cert /etc/ssl/certs/server.crt
sudo cp new.cert.key /etc/ssl/private/server.key
如果提示private目录不存在就自己创建。
6,配置apache
修改httpd.conf文件在后面加上
NameVirtualHost *:443 NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin email address here ServerName mydomain.net ServerAlias www.mydomain.net DocumentRoot /srv/www/mydomain.net/public_html/ ErrorLog /srv/www/mydomain.net/logs/error.log CustomLog /srv/www/mydomain.net/logs/access.log combined </VirtualHost> <VirtualHost *:443> ServerAdmin jzb@zonker.net ServerName mydomain.net ServerAlias www.mydomain.net DocumentRoot /srv/www/mydomain.net/public_html/ ErrorLog /srv/www/mydomain.net/logs/error.log CustomLog /srv/www/mydomain.net/logs/access.log combined SSLEngine on SSLOptions +StrictRequire SSLCertificateFile /etc/ssl/certs/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key </VirtualHost>
根据实际情况进行修改。
7,重启Apache
执行命令:service httpd restart
8,再次登入joomla管理后台=》服务器的设置选项中将强制SSL设置为“只是后台管理”。
现在访问网站:
出现这个页面说明https成功。