阿里云Nginx配置SSL证书
SSL证书申请
-
在阿里云管理控制台的产品服务里选SSL证书。
-
选择免费的Symantec证书,注意价格是0再购买
-
之后的配置一般都选择自动,忘记截图了。
-
然后就是等待审核,第二天一早收到的审核通过的邮件,然后就可以下载证书了。
-
由于我的服务器按爪给你的是Nginx,下载对应的版本后有两个文件
其中pem文件是加密文件,key文件是解密文件。 -
用Xftp6把两个文件传输到/etc/nginx/cert 中
-
修改/etc/nginx里的nginx.conf文件,由于我对vim不熟是把这个文件下载到本地修改的
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 80;
server_name xxxx;
return 301 https://www.xxxxxx.com$request_uri;
}
server {
listen 443 ;
server_name xxxxx;
charset utf-8;
ssl on;
ssl_certificate cert/xxxx.pem;
ssl_certificate_key cert/xxxx.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 / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
uwsgi_param UWSGI_SCRIPT my_blog.wsgi;
uwsgi_param UWSGI-CHDIR /data/wwwroot/my_blog/;
}
location /static/ {
alias /data/wwwroot/my_blog/static/;
}
}
}
- 修改conf文件并传上服务器后,关闭nginx服务,并执行
./nginx -t
对配置文件进行测试,发现错误 [emerg] unknown directive “ssl” ,字面意思可知没有安装ssl库,所以不认识配置文件中的ssl字样,有两种可能,一是没有安装这个模块,二是安装了但是编译时没有把这个模块编译进去。
解决办法
1.进入Nginx的解压目录/usr/local/nginx-1.13.7,执行./configure --with-http_ssl_module
,如果没有报错说明只需要重新编译就可以执行第3步,如果有报错
SSL modules require the OpenSSL library.则进入第二步,安装需要的库。
2.安装ssl开发库sudo apt-get install openssl libssl-dev
安装好后重复执行第一步
3.在/usr/local/nginx-1.13.7 目录下执行make,注意不是make install,因为make是用来编译的,而make install是安装,不然你整个nginx会重新覆盖的。
4.在我们执行完做命令后,我们可以查看到在nginx解压目录下,objs文件夹中多了一个nginx的文件,这个就是新版本的程序了。首先我们把之前的nginx先备份一下,然后把新的程序复制过去覆盖之前的即可。
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
cp objs/nginx /usr/local/nginx/sbin/nginx
5.之后进入/usr/local/nginx/sbin再执行./nginx -t
,提示没有错误后重新启动nginx即可。
9.成功的通过https://进行了访问,且如果用http会自动跳转https,满足了小程序的开发要求。