解决安装SSL后重启apache需要输入密码的困扰

第一种方法(我就用这个):

1.  vi /etc/apache2/mods-available/ssl.conf

2.  注释SSLPassPhraseDialog  builtin,在后面加上SSLPassPhraseDialog exec:/etc/apache2/ssl/ssl_pass.sh

3.  vi /etc/apache2/ssl/ssl_pass.sh

4.  输入

     #!/bin/sh
    echo “你的ssl证书密码

5.  chmod +x /etc/apache2/ssl/ssl_pass.sh

6.  /etc/init.d/apache2 restart

这样就直接重启apache了,不需要再每次都输入恼人的证书密码

第二种方法(我没试验过,不针对unbuntu的):

1:去掉/usr/local/bin/apachectl startssl启动的pass phrase,用空pass phrase启动apache
(while preserving the original file):
$ cp server.key server.key.org
$ openssl rsa -in server.key.org -out server.key
确认server.key 文件为root可读
$ chmod 400 server.key

在vps上搭建nginx+twip

apache上搭建twip也试过,不过apache不愧是个吃资源的大户,于是准备改用nginx。网上搜了把发现还是很简单的,以下内容在原来的基础上略有修改。 1.安装需要的包

apt-get install curl libcurl3 libcurl3-dev

2.安装php组件

apt-get install php5-cli php5-cgi php5-curl spawn-fcgi

在最后添加:cgi.fix_pathinfo=1修改配置项:/etc/php5/cgi/php.ini 3.安装nginx组件

apt-get install nginx

4.启动php服务

1
2
killall -HUP php-cgi
spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi

5.配置nginx的配置文件,这里面需要注意下,有几个地方略作了修改。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
server {
    listen   443;
    server_name  twip.somename.com:443;
    root   /var/www;

    location / {
        if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php last;
        }
        index  index.php index.html index.htm;
    }

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/$fastcgi_script_name;
        include    fastcgi_params;
    }

    location ~ /\.ht {
    deny  all;
    }
}

注意,因为我使用了加密连接,所以这里我监听的是443端口,server_name是你的域名root和fastcgi_param里的路径和你的api路径一致,我的是直接放在网站根目录下,如果你是放在yourdomain.com/twip下的话 可以改成/var/www/twip。 这段配置还有一个需要注意的地方就是要放在nginx.conf的http节点里面。由于我配置了ssl加密连接,所以还需要配置下相关证书。 在http节点里server节点外面加上配置好的证书路径即可。

ssl on;
ssl_certificate /etc/nginx/conf/ssl-unified.crt;
ssl_certificate_key /etc/nginx/conf/ssl.key;

关于证书的配置方法,因为我用的是startssl的免费证书,所以具体的方法可以看看他们的faq,非常简单。 最后就是部署twip了,这个也非常简单,到code.google.com上down下代码把config.php里的consume_key之类的填一下上传即可。 最后重启下nginx看看,/etc/init.d/nginx restart。   以上文章大部分参考的是在vps上搭建nginx+twip,在此借用希望不介意。

Lighttpd下的https强制跳转

考虑到以后可能会出现的敏感内容,于是申请并且安装了个免费的startssl的证书,然后~打算看看怎么才能强制使用ssl连接。。。

以下内容摘自:http://redmine.lighttpd.net/projects/1/wiki/HowToRedirectHttpToHttps

 

How to redirect HTTP requests to HTTPS

Since 1.4.19 the following should work. For older versions check the history of this page… or just update, srsly.

Example 1 – redirect everything

$HTTP["scheme"] == "http" {
    # capture vhost name with regex conditiona -> %0 in redirect pattern
    # must be the most inner block to the redirect rule
    $HTTP["host"] =~ ".*" {
        url.redirect = (".*" => "https://%0$0")
    }
}

Example 2 – specific url

$HTTP["scheme"] == "http" {
    $HTTP["host"] =~ ".*" {
        url.redirect = ("^/phpmyadmin/.*" => "https://%0$0")
    }
}

Example 3 – only for specific vhost and url

$HTTP["scheme"] == "http" {
    $HTTP["host"] == "sth.example.com" {
            url.redirect = ("^/phpmyadmin/.*" => "https://sth.example.com$0")
    }
}

Further stuff

Also works the other way round (https -> http) with if $HTTP["scheme"] == "https"

Debian下配置Apache的SSL连接

没啥好说的,看看我博客就知道了,虽然我用的Lighttpd,不过,作为比较泛滥的Apache还是顺便研究了下它的SSL连接配置。
1. 安装Apache2

Command代码
  1. sudo apt-get install apache2

2. 开启SSL模块

Command代码
  1. sudo a2enmod ssl

 

注:关闭模块使用 a2dismod 命令。

3. 创建证书
我们可以使用openssl来创建 ,我闲着蛋疼到startssl上申请了个免费的~

Command代码
  1. sudo openssl req -x509 -newkey rsa:1024 -keyout apache.pem -out apache.pem -nodes -days 999

在要求输入Common Name (eg, YOUR name) 时,输入你的主机名。 (别自己签的证书都不是给自己的哈~)

4、编辑SSL的配置

我们可以将当前的默认站点配置(000-default)文件拷贝一份(cp /etc/apache2/sites-enabled/000-default 001-ssl),然后进行修改

Command代码
  1. vi /etc/apache2/sites-enabled/001-ssl

把端口改为443,加入SSL认证配置。其它的根据需要自己定制 与普通配置无异。

NameVirtualHost *:443  //开头80改下443

ServerSignature On
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem  //添加上证书,把SSL开关打开,估计傻子都能看懂,后面啥的不用动了

ServerAdmin webmaster@localhost
#[……]

修改普通http方式的配置

Command代码
  1. nano /etc/apache2/sites-enabled/000-default

把端口改为80  //其实默认就是80~除非你想用别的。

NameVirtualHost *:80
ServerAdmin webmaster@localhost
#[……]

编辑Apache端口配置,加入443端口(SSL的)

Command代码
  1. vi /etc/apache2/ports.conf

其实说编辑不如说是检查,其实配置文件里已经判断了,如果开启了SSL模块就会监听443端口~懒得复制原始配置啦

 

重新载入Apache的配置

Command代码
  1. /etc/init.d/apache2 force-reload

或者重新启动Apache2

Command代码
  1. /etc/init.d/apache2 restart

轻轻松松就能开启SSL了,不过,当时申请了startssl的证书,花了点时间~我最后也没给这个实验性质的apache加上startssl上申请的证书,直接在lighttpd上加的~