一、获取证书
我们去 FreeSSL 获取,打开如下图所示:

品牌选择:随便选一个,只要是免费的就行,我选了Let's Encrypt,然后输入自己的域名,点击创建免费的SSL证书,进入如下图的页面:

证书类型:就用默认的RSA就行,具体RSA和ECC的区别,网上搜到是这么说的:证书类型选择ECC。这里主要是选择数字签名的算法,对于普通用户使用默认的ECC即可。如果需要根据自己的具体情境来选择,一般有以下选择依据:
(1) RSA签名算法适合于:Verify操作频度高,而Sign操作频度低的应用场景。比如,分布式系统中基于capability的访问控制就是这样的一种场景。
(2) ECDSA签名算法适合于:Sign和Verify操作频度相当的应用场景。比如,点对点的安全信道建立。
验证类型:选DNS,和文件验证具体的区别如下:
1.DNS。 CA(Certificate Authority 数字证书认证机构)将通过查询 DNS 的 TXT 记录来确定您对该域名的所有权,因此需要在域名管理平台将生成的 TXT 记录名与记录值添加到该域名下。
2.文件。CA 将通过访问特定 URL 地址来验证您是否有改域名的所有权。因此,您需要下载给顶的验证文件,并上传到您的服务器。
CSR生成:选浏览器生成。一般的浏览器都支持Web Cryptography,直接使用默认的浏览器生成最方便。
都选好后,输入自己的邮箱,点击创建,会生成如下图页面所示的DNS验证信息:

接下来,我们打开阿里云域名管理那里,在域名解析新建TXT解析记录,如下图:


点击验证,验证通过后就会出现证书文件的页面,下载到本地,证书就获取完成了。
二、上传证书到服务器,并配置nginx支持
* 把证书上传到服务器这里就不展开了,一个scp命令的的事情,重点来看下nginx的配置。
贴出我的配置:
server {
#listen 80; // 原先http的时候,是80端口,先把这个给注释掉
listen 443 ssl; // 新增443端口兼听,https是443端口
server_name www.dusnoob.com dusnoob.com; // 用原先的不变
ssl_certificate /alidata/xxxxx/full_chain.pem; // 新增证书公钥地址
ssl_certificate_key /alidata/xxxxx/private.key; // 新增证书私钥地址
index index.php index.html index.htm;
root /alidata/www/xxxxxx;
charset utf-8;
#access_log /var/log/nginx/host.access.log main;
location / {
#try_files $uri $uri/ /index.php?$args;
}
error_page 404 = http://dusnoob.com;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
#root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
keepalive_timeout 70;
ssl_session_timeout 5m; // 网上ssl有很多配置,优化的可以具体研究,这里不展开了
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}
// 新增这里配置原先http的访问时,直接重定向到新的https,这样就兼容了,原先的网址
server {
listen 80;
server_name www.dusnoob.com dusnoob.com;
rewrite ^(.*)$ https://dusnoob.com$1 permanent;
}
然后重启nginx 使用生效。输入网址,看是不是已经是https了,而且浏览器上不再展示不安全这三个醒目的字了。
最后需要注意下阿里云后台的的安全组里面,有没有添加443端口的规则,没有加上就可以了。