登陆阿里云 产品服务--安全--SSL证书
按照以下流程申请证书文件
1购买证书
直接购买
2申请证书
填写资料 包括域名 姓名等
其中域名验证类型建议选择DNS、文件验证虽然时间短但创建隐藏文件夹时可能有问题。
如果你有操作经验也可以选择文件验证,优点是时间很短;DNS验证需要等待解析生效相对时间长点
如果你懂得生成CSR则可以自己生成上传,否则选系统生成并点击创建,然后提交审核。
3验证
耐心等待几分钟 就会验证成功
点击下载
其中点击帮助 可以查询到帮助文档 按照帮助文档配置即可
https://help.aliyun.com/knowledge_detail/95491.html
具体流程
1下载证书
2在Nginx的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,请将对应的私钥文件放到cert目录下并且命名为a.key;
3打开 Nginx 安装目录下 conf 目录中的 nginx.conf 文件,找到:
修改成你自己的信息
# 以下属性中以ssl开头的属性代表与证书配置有关,其他属性请根据自己的需要进行配置。
server {
listen 443;
server_name localhost; # localhost修改为您证书绑定的域名。
ssl on; #设置为on启用SSL功能。
root html;
index index.html index.htm;
ssl_certificate cert/domain name.pem; #将domain name.pem替换成您证书的文件名。
ssl_certificate_key cert/domain name.key; #将domain name.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; #添加属性。
}
}
然后使用./nginx -t 测试配置文件
这里经常会出现如下问题
nginx:[emerg]unknown directive ssl,就是这个错误提示
因为我们配置这个SSL证书需要引用到nginx的中SSL这模块,然而我们一开始编译的Nginx的时候并没有把SSL模块一起编译进去,所以导致这个错误的出现。
1来到安装目录下
2./configure --with-http_ssl_module //重新添加这个ssl模块
3执行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
再次运行检测
检测通过,启动nginx
这里新版本的nginx可能会报警告 不用理会
如图配置成功
但是用户直接输入域名依然会请求http形式
可以设置http自动跳转到https配置
HTTP 自动跳转 HTTPS 的安全配置(可选)
若您不了解通过 HTTPS 访问网站的方式,可以通过配置服务器,让其自动将 HTTP 的请求重定向到 HTTPS。您可以通过以下操作设置:
- 根据实际需求,选择以下配置方式:
- 在页面中添加 JS 脚本。
- 在后端程序中添加重定向。
- 通过 Web 服务器实现跳转。
- Nginx 支持 rewrite 功能。若您在编译时没有去掉 pcre,您可在 HTTP 的 server 中增加
rewrite ^(.*) https://$host$1 permanent;
,即可将默认80端口的请求重定向为 HTTPS。修改如下内容:server { listen 443; server_name www.domain.com; #填写绑定证书的域名 ssl on; root /var/www/www.domain.com; #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。 index index.html index.htm; ssl_certificate 1_www.domain.com_bundle.crt; #证书文件名称 ssl_certificate_key 2_www.domain.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 / { index index.html index.htm; } } server { listen 80; server_name www.domain.com; #填写绑定证书的域名 rewrite ^(.*)$ https://$host$1 permanent; #把http的域名请求转成https }
- 若修改完成,重启 Nginx。即可使用
http://www.domain.com
进行访问。成功跳转到https