linux 配置nginx https 访问认证

来源:互联网 发布:vmware for ubuntu 编辑:程序博客网 时间:2024/05/01 20:30

1   首先查看服务器有没有安装openssl 支持包,

          rpm -qa | grep  openssl

 如果有结果输出,说明已经有了openssl 包的支持

如果没有结果输入 通过命令

 yum instance -y openssl            yum install -y openssl-devel  来安装openssl 支持


2   我们知道https 访问协议就是通过添加证书的认证 ,采用加密的手段保证了我们信息访问的安全,

接下来就通过openssl 来生成证书所需的原始文件  证书私钥 和 证书请求文件 (csr  cerificate signing erquest)其中包含的了服务器的信息和申请单位的信息

openssl req -new -node -sha  -newkey rsa:2048 -keyout private.key  -out  mydomain.csr

输入命令后会有提示信息,根据提示信息输入相关信息后即可,可以参考


再来一个我本地截图,供参考。



  3 接下来参看一下生成的文件吧,,



4  利用上面生成的秘钥  和证书请求文件来生成证书,

 openssl x509 -req -days 365 -in ./domain.csr -signkey ./private.key  -out  mydomain.crt

5  查看生成的证书文件,


6 现在开始配置nginx 喽

进入ngInx 配置文件目录 , 用vim 编辑器打开配置文件,


贴上来 方便大家直接粘贴,

    server {
        listen       443;
        server_name  test.xbddai.com;
        ssl on;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        ssl_certificate      /etc/pki/tls/certs/mydomain.cer;
        ssl_certificate_key  /etc/pki/tls/certs/myprivate.key;
        ssl_session_timeout  5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers   on;


        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass  http://localhost:8083;
        }

配置完成后千万要记得重启 nginx 服务器,让配置生效。

/usr/local/nginx/sbin/nginx -s reload

重启过程中如果出现

[emerg] 10464#0: unknown directive "ssl" in /usr/local/nginx-0.6.32/conf/nginx.conf 的问题,则需要重新编译nginx


1 查看编译安装nginx 的时候,编译安装了哪些模块:


[root@iZ23rvxw1mmZ nginx]# ./sbin/nginx -V
nginx version: nginx/1.8.1
built by gcc 4.1.2 20080704 (Red Hat 4.1.2-55)
built with OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
TLS SNI support disabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

 可以看到 ,我已经编译加载了模块 --with_http_ssl_mdule 


2 如果您的没有 加载模块 那么重新编译把模块加载进去吧,

进入 nginx 解压缩目录:

[root@iZ23rvxw1mmZ nginx-1.8.1]# ll
total 676
drwxr-xr-x 6 1001 1001   4096 Aug 22 11:05 auto
-rw-r--r-- 1 1001 1001 251319 Jan 26  2016 CHANGES
-rw-r--r-- 1 1001 1001 383019 Jan 26  2016 CHANGES.ru
drwxr-xr-x 2 1001 1001   4096 Dec 21 10:09 conf
-rwxr-xr-x 1 1001 1001   2478 Jan 26  2016 configure
drwxr-xr-x 4 1001 1001   4096 Aug 22 11:05 contrib
drwxr-xr-x 2 1001 1001   4096 Aug 22 11:05 html
-rw-r--r-- 1 1001 1001   1397 Jan 26  2016 LICENSE
-rw-r--r-- 1 root root    366 Feb  8 15:46 Makefile
drwxr-xr-x 2 1001 1001   4096 Aug 22 11:05 man
drwxr-xr-x 3 root root   4096 Feb  8 15:47 objs
-rw-r--r-- 1 1001 1001     49 Jan 26  2016 READ


 3 可以看到 configure 用于生成makefile的配置文件,

重新编译: ./configure  --prefix=/usr/local/nginx  --with-http_stub_status_module --with-http_ssl_module

执行完成后,执行make   将makefile文件编译一下生成obj文件(切记不可 make install  不然会把之前安装好的nginx 覆盖掉)


 4 接下来需要停止nginx  如果还没有启动,当然就不用理会了,

停止方式可以找到nginx 服务所占用的进程 , 把进程干掉就可以啦,是不是很简单,

需要替换掉nginx 二进制文件 

cp   ./objs/nginx   /usr/local/.nginx/sbin 

cp: overwrite `/usr/local/nginx/sbin/nginx'? yes


 5 查看一下编译模块 看是否已经将模块编译进去了,, 命令还是步骤1 使用的命令哦!






备注:常用的格式转换

            a,得到 pfx 格式的私钥

                  openssl pkck12 -export -out server.pfx -inkey server.key -in server.crt

            b,从pfx文件中分离出 cer 格式的公钥

                 openssl x509 -inform pem -in server.crt -outform der -out server_public.cer

1 0
原创粉丝点击