• nginx配置ssl证书实现https


    一,环境说明

    服务器系统:centos6

    服务器IP地址:0.0.0.0

    域名:bjubi.com

    二,域名解析到服务器

    在阿里云控制台-产品与服务-云解析DNS-找到需要解析的域名点“解析”,进入解析页面后选择【添加解析】按钮会弹出如下页面:

    主机记录这里选择@,记录值就是服务器ip地址,确认。

    三,申请ca证书

    在阿里云控制台-产品与服务-安全(云盾)-CA证书服务(数据安全),点击购买证书,

    选择“免费版DV SSL”,点击立即购买:

    然后点去支付:

    最后确认支付:

    就会回到管理界面:

    点击“补全”,输入要解析的域名,点下一步:

    说明:因为我们这里申请的是开发版免费证书,所以一个证书仅支持一个域名认证,不支持通配符。

    等待几分钟,证书状态变为“已签发”后,证书就申请成功了。

    四,下载证书

    列表中找到已签发的证书,下载:

    进入下载页面,找到ngin页签中nginx配置信息,并“下载证书 for Nginx”:

    记录以下内容,为了一会儿配置nginx用:

    下载的文件有两个:

    1,214292799730473.pem

    2,214292799730473.key

    五,服务器安装,配置nginx

    登录到服务器:

    $ apt-get update // 更新软件
    $ apt-get install nginx // 安装nginx

    六,配置ca证书

    1,nginx的安装目录为:/etc/nginx/。进入目录,增加cert/文件夹,把刚刚下载的两个文件上传到cert/文件夹中。

    2,在/etc/nginx/sites-enabled/下,增加bjubi.com文件。内容如下:

    说明:下面的配置是对443端口和80端口进行监听,443端口要启用ssl。监听443端口的server配置可以仿照上面ca认证页面的nginx配置示例进行配置。

    root节点笔者创建了一个bjubi.com/的文件夹,专门存放来自这个域名的请求以示区分。

    bjubi.com/文件夹下增加一个index.html文件,里面仅仅写了一行<h1>welcome。

    复制代码
    复制代码
    server {
        listen 443;
        server_name bjubi.com; // 你的域名
        ssl on;
        root /var/www/bjubi.com; // 前台文件存放文件夹,可改成别的
        index index.html index.htm;// 上面配置的文件夹里面的index.html
        ssl_certificate  cert/214292799730473.pem;// 改成你的证书的名字
        ssl_certificate_key cert/214292799730473.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 / {
            index index.html index.htm;
        }
    }
    server {
        listen 80;
        server_name bjubi.com;// 你的域名
        rewrite ^(.*)$ https://bjubi.com:443/$1 permanent;// 把http的域名请求转成https
    }
    复制代码
    复制代码

    配置完成后,检查一下nginx配置文件是否可用,有successful表示可用。

    $ nginx -t // 检查nginx配置文件

    配置正确后,重新加载配置文件使配置生效:

    $ nginx -s reload // 使配置生效

    至此,nginx的https访问就完成了,并且通过rewrite方式把所有http请求也转成了https请求,更加安全。

    如需重启nginx,用以下命令:

    $ service nginx stop // 停止
    $ service nginx start // 启动
    $ service nginx restart // 重启

    七,访问效果

    输入http:bjubi.com也会自动跳转至https页面。

    说明:如果是云服务器比如阿里云ECS,需要到阿里云ECS的管理后台的安全组,修改端口过滤规则把80端口和443端口开放才能访问到。

    CentOS下配置Nginx的https时报错:缺少ngx_http_ssl_module

    1.首先,找到Nginx安装包的位置。比如,我的是:/usr/local/src/nginx-1.15.1

    cd /usr/local/src/nginx-1.15.1
    如果忘记安装包放哪里了,可以find命令找一下。

    如果还是找不到(比如删除了)。可以查看当前Nginx的版本号,重新下载一个。

    【查看Nginx版本命令】/usr/local/nginx/sbin/nginx -V  (/usr/local/nginx/是你Nginx服务器的实际位置)

    2.生成新的Nginx配置。执行

    /usr/local/nginx/sbin/nginx -V 
    查看configure arguments:后边有没有值,如果有,就复制下来。

    然后执行 

    ./configure --原来有的模块(如果有的话) --with-http_ssl_module
    make
    3.关闭现在运行的Nginx服务器。

    /usr/local/nginx/sbin/nginx -s stop
     由于我的配置文件报错,缺少

    nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:121

    所以无法关闭。于是,我尝试把新的正确的nginx.conf替换出问题的nginx.conf。

    再次执行关闭,成功。

    4.OK,执行最后的步骤。把编译好的nginx覆盖掉原有的nginx。

    cp ./objs/nginx /usr/local/nginx/sbin/
    系统会提示是否覆盖,输入y。

    我运行时,系统提示Text file busy,执行失败。

    没关系!

    ps -A
    找到所有Nginx的进程。

    Kill 1234
    再次执行

    cp ./objs/nginx /usr/local/nginx/sbin/
    没有报错。把正确的nginx.conf文件夹上传。

    启动nginx。

    ./nginx -c /usr/local/nginx/conf/nginx.conf
    运行成功!!

  • 相关阅读:
    第二阶段个人总结7
    第二阶段个人总结6
    第十七周进度报告
    个人总结
    十六周进度报告
    人月神话阅读笔记3
    十五周进度报告
    十四周进度报告
    人月神话阅读笔记2
    购买图书
  • 原文地址:https://www.cnblogs.com/zmsn/p/11644053.html
Copyright © 2020-2023  润新知