默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译时指定–with-http_ssl_module参数,安装模块依赖于OpenSSL库和一些引用文件,通常这些文件并不在同一个软件包中。通常这个文件名类似libssl-dev。


生成证书

可以通过以下步骤生成一个简单的证书:

首先,进入你想创建证书和私钥的目录,例如:


$ cd /usr/local/nginx/conf

创建服务器私钥,命令会让你输入一个口令:


$ openssl genrsa -des3 -out server.key 1024

创建签名请求的证书(CSR):


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

在加载SSL支持的Nginx并使用上述私钥时除去必须的口令:


$ cp server.key server.key.org

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

配置nginx

最后标记证书使用上述私钥和CSR:


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

修改Nginx配置文件,让其包含新标记的证书和私钥:


server {

    server_name YOUR_DOMAINNAME_HERE;

    listen 443;

    ssl on;

    ssl_certificate /usr/local/nginx/conf/server.crt;

    ssl_certificate_key /usr/local/nginx/conf/server.key;

}

重启nginx。

这样就可以通过以下方式访问:


https://YOUR_DOMAINNAME_HERE


另外还可以加入如下代码实现80端口重定向到443IT人乐园


server {

listen 80;

server_name ww.centos.bz;

rewrite ^(.*) https://$server_name$1 permanent;

}





给nginx配置SSL证书之后,https可以正常访问,http访问显示400错误,nginx的配置如下:

server {

            listen 80 default backlog=2048;

            listen 443;

            server_name jp.com;

            root /var/www/html;

 

            ssl on;

            ssl_certificate /usr/local/Tengine/sslcrt/ wosign.com.crt;

            ssl_certificate_key /usr/local/Tengine/sslcrt/ wosign.com .key;

        }

http访问的时候,报错如下:

400 Bad Request

The plain HTTP requset was sent to HTTPS port. Sorry for the inconvenience.

Please report this message and include the following information to us.

Thank you very much!

 

说是http的请求被发送到https的端口上去了,所以才会出现这样的问题。

2

server {

            listen 80 default backlog=2048;

            listen 443 ssl;

            server_name jp.com;

            root /var/www/html;

 

            ssl_certificate /usr/local/Tengine/sslcrt/ wosign.com.crt;

            ssl_certificate_key /usr/local/Tengine/sslcrt/ wosign.com .Key;

        }

把ssl on;这行去掉,ssl写在443端口后面。这样http和https的链接都可以用,完美解决。



 出现的问题:游戏以游客的身份登录,验证不经过。后面讲https的部分注释掉,才得以解决,但是核心问题还没有解决,由于测试正在进行中,因此,还需要下面http和https共存的方式,仅仅是一种想法,并未落实。若是域名访问,以后还需要注册域名绑定ip,另外若要走线上苹果提审,是否要ssl认证购买。域名购买都要经过协商以后才可以定夺。

 备注:以上内容英语能力好的,可以自行翻译,由于快要下班,仅为个人记载,第二次加班。。。。。