如何在阿里云nginx环境下部署免费的SSL证书

环境:

CentOS Linux release 8.2.2004 (Core)

nginx/1.18.0

前提是域名已经解析到ESC,并且能够http://www.yunchenit.com访问

接下来重点处理SSL,最终实现https://www.yunchenit.com访问,并且https前面有一把锁的标志。

 

一、域名申请SSL

登录阿里云,搜索SSL

https://yundun.console.aliyun.com/?spm=a2c1d.8251892.top-nav.dbutton.67515b76eLTq0q&p=cas#/certExtend/free

点击SSl证书,免费证书

第一步0元购买,接下来第二步,按要求填写即可,等待审核。一般15分钟即可。

 然后选择Nginx下载到你的电脑

 解压如下

这两个文件等下要上传到阿里云的ECS

二、去服务ECS操作

1、用PuTTY登录ECS,创建目录用来放SSL证书文件

进入目录conf

[root@XXX ~]#cd /usr/local/nginx/conf

创建目录cert

#mkdir cert

然后,用FTP上传到/data/www,再拷贝到cert目录下

#cp /data/www/www.test.com.pem /usr/local/nginx/conf/cert

#cp /data/www/www.test.com.key/usr/local/nginx/conf/cert

2、编辑vhost

#cd /usr/local/nginx/conf/vhost

#vi test.conf,粘贴以下内容


server {
        listen 80;
        server_name www.yunchenit.com test.com;
        rewrite ^/.*$ https://www.yunchenit.com permanent;
}

server {
        listen 443 ssl;
        server_name www.yunchenit.com;
        root /data/www/yunchenit/public;
        index index.html index.htm index.php;

        ssl_certificate /usr/local/nginx/conf/cert/www.yunchenit.com.pem;
        ssl_certificate_key /usr/local/nginx/conf/cert/www.yunchenit.com.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 / {
               try_files $uri $uri/ /index.php?$query_string;
        }
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|json|swg)$ {
                        expires      30d;
        }
        location ~ .*\.(js|css)?$ {
                        expires      12h;
        }

        location ~ ^.+\.php {
                #fastcgi_pass   bakend;
                fastcgi_pass   unix:/usr/local/php/var/run/php-cgi.sock;
                fastcgi_index  index.php;
                fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
                fastcgi_param  PATH_INFO          $fastcgi_path_info;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi.conf;
        }

        access_log  /data/www/nginx_log/yunchenit.log access;
}

保存:wq

3、重启看效果

重启nginx
#cd /usr/local/nginx/sbin,输入命令./nginx -s reload

正常来说这样就可以了。

我的情况到这一步就出了问题,重启失败。显示nginx:[emerg]unknown directive ssl

那么,接下来就是一系列的处理。

首先进入nginx下载并解压的源码包目录,我的是下载到/home/soft

#cd /home/soft/nginx-1.18.0

编译

#./configure --prefix=/usr/local/nginx --with-http_ssl_module

这里出错了(SSL模块需要OpenSSL库),那么安装OpenSSL,输入yum -y install openssl openssl-devel,安装完了,

再来#./configure --prefix=/usr/local/nginx --with-http_ssl_module

这下可以了,查看一下效果

#cd /usr/local/nginx/sbin

[root@XXX sbin]# ./nginx -V
nginx version: nginx/1.18.0
built by gcc 8.3.1 20191121 (Red Hat 8.3.1-5) (GCC)
built with OpenSSL 1.1.1g FIPS  21 Apr 2020
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module

接下来进行nginx编译

#cd /home/soft/nginx-1.18.0

#make,这里千成不要执行make install,否则就要覆盖安装了

接下来备份原来的nginx

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_bak

然后将刚刚编译好的nginx覆盖掉原有的nginx,nginx需要停止

cp ./objs/nginx /usr/local/nginx/sbin/,这一步覆盖nginx我的又出错了(cp: cannot create regular file `/usr/bin/nginx': Text file busy),真是头大,先关掉

#cd /usr/local/nginx/sbin,输入命令./nginx -s stop

再覆盖就OK了,接下来重启nginx

./nginx -s reload,又出错了([error] open() “/usr/local/var/run/nginx/nginx.pid” failed)

真是麻烦多多,不过离成功不远了

网上资料说没有nginx.pid文件,我一看/usr/local/nginx/logs目录下是真的没有nginx.pid,

那么如何生成这个文件?在sbin/ 路径下执行

#cd /usr/local/nginx/sbin

./nginx -c /usr/local/nginx/conf/nginx.conf,回车

再重./nginx -s reload,成功!

现在在浏览器输入http://www.yunchenit.com,还是打不开,奇怪的很

又是一翻折腾,去看了阿里云的文档,https://help.aliyun.com/document_detail/98728.htm?spm=a2c4g.11186623.2.18.238960e0caAi6H#section-wy0-022-q1s

有这么一句话(#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。),我才发现是配置文件出了问题,打开配置文件

#cd /usr/local/nginx/conf/vhost

#vi test.conf

server{

listen 443;

}

试一下,把listen 443;改成listen 443 ssl;再重启ngnix

打开浏览器输入http://www.yunchenit.com,这次看到了hello world,并且有一把锁。OK搞定。

 总结:这次在阿里云nginx环境下部署免费的SSL证书实战,可以说是非常不顺利,虽然最后解决了问题,但是全靠网上搜索,好在有网络哈哈,突然很无奈的感慨:搜索也是一种解决文案

大家有没有像我一样的,从事互联网工作,解决问题全部搜索,哈哈。

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值