FREENOM免费域名申请

免费的建议作为实验用,最好还是使用付费域名。
freenom注册账号后,搜索并选择一个你需要的域名
image.pngimage.png
一些确认步骤后进去my Domains
image.png
image.png
选择namservers
image.png
此处填写的是国内的域名解析的DNS服务器。因为freenom自己的的DNS国内速度不稳定。此处我选择了DNSPOD

DNSPOD域名解析

选择我的域名 -> 添加刚申请的域名 -> 添加成功后点击域名 ->
image.png
默认的两条@记录不用管他,选择添加记录,分别添加一个www和一个@记录,记录值填写你的服务器的公有ip。
image.png
然后选中一条点击SSL进行SSL证书申请,有付费和免费版本,这里选择免费版本。
15分钟后(或者更久)点击绿色的ssl选择整数管理,下载证书到本地。

SSL 是指安全套接字层,简而言之,它是一项标准技术,可确保互联网连接安全,保护两个系统之间发送的任何敏感数据,防止网络犯罪分子读取和修改任何传输信息,包括个人资料。两个系统可能是指服务器和客户端(例如,浏览器和购物网站),或两个服务器之间(例如,含个人身份信息或工资单信息的应用程序)。

此举可确保在用户和站点之间,或两个系统之间传输的数据无法被读取。它使用加密算法打乱传输中的数据,防止数据通过连接传输时被黑客读取。这里所说的数据是指任何敏感或个人信息,例如信用卡号和其他财务信息、个人姓名和住址等。

TLS(传输层安全)是更为安全的升级版 SSL。由于 SSL 这一术语更为常用,因此我们仍然将我们的安全证书称作 SSL。但当您从DigiCert购买 SSL 时,您真正购买的是最新的 TLS 证书,有 ECC、RSA 或 DSA 三种加密方式可以选择。

如果某个网站受 SSL 证书保护,其相应的 URL 中会显示 HTTPS(超文本传输安全协议)。单击浏览器地址栏的挂锁图标,即可查看证书详细信息,包括颁发机构和网站所有者的公司名称。
如果网站上存在 SSL,用户可以看到网站地址以 https:// 开头,而不是以 http:// 开头(多出来的“s”代表“secure”,安全)

SSL证书安装方法

我们以nginx为例
首先解压下载好的证书压缩包,nginx文件夹中的两个文件即是我们需要的证书。我们修改此文件夹名为 cert_nginx

进入服务器的/etc/nginx目录

  1. cd /etc/nginx

使用git打开本地的cert_nginx父目录


cx@DESKTOP-VS3A41J MINGW64 /g/code_workspace/aws keys
$ ls
Apache/      IIS/      Tomcat/             www.s2aclab.ml.zip
cert_nginx/  s2ac.pem  www.s2aclab.ml.csr

cx@DESKTOP-VS3A41J MINGW64 /g/code_workspace/aws keys
$ scp -r cert_nginx root@121.37.130.65:/etc/nginx/cert                          root@121.37.130.65's password:
1_www.s2aclab.ml_bundle.crt                   100% 3765   185.8KB/s   00:00
2_www.s2aclab.ml.key                          100% 1700    76.4KB/s   00:00
传送到华为云服务器

在aws中,接受华为云服务器scp传的数据

(py36_django) root@ip-172-31-15-248:/etc/nginx# scp -r root@121.37.130.65:/etc/nginx/cert /etc/nginx/cert
root@121.37.130.65's password:
2_www.s2aclab.ml.key                          100% 1700     1.7KB/s   00:00
1_www.s2aclab.ml_bundle.crt                   100% 3765     3.7KB/s   00:00
(py36_django) root@ip-172-31-15-248:/etc/nginx# ls
cert          fastcgi_params  mime.types    scgi_params      snippets
conf.d        koi-utf         nginx.conf    sites-available  uwsgi_params
fastcgi.conf  koi-win         proxy_params  sites-enabled    win-utf
(py36_django) root@ip-172-31-15-248:/etc/nginx/sites-enabled# vim proj_lab.conf 

server{
        listen 443;    # 443为https端口 80 为http
        server_name s2aclab.ml;    # 服务器名称改为域名
        charset utf-8;

        ssl on;    # 开启ssl
        ssl_certificate /etc/nginx/cert/1_www.s2aclab.ml_bundle.crt;    # 公钥
        ssl_certificate_key /etc/nginx/cert/2_www.s2aclab.ml.key;    # 私钥
        ssl_session_timeout 5m;

        client_max_body_size 75M;       # max upload size

        location /static {
                alias /home/proj_lab/static_root;
        }
        location /media {
                alias /home/proj_lab/media;
        }
        # Finally, send all non-media requests to the Django server.
        location / {
                # socket transmit not http
                uwsgi_pass 127.0.0.1:8001;
                # the uwsgi_params file you installe
                include /etc/nginx/uwsgi_params;
        }

}

保存。测试是否正确

(py36_django) root@ip-172-31-15-248:/etc/nginx/sites-enabled# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重启nginx服务

(py36_django) root@ip-172-31-15-248:/etc/nginx/sites-enabled# service nginx restart

输入https://www....访问
image.png
但此时使用http://却无法访问,因为我们将监听的80端口改成了443端口。所以我们需要修改使用户使用http访问时自动跳转到https的形式

(py36_django) root@ip-172-31-15-248:/etc/nginx/sites-enabled# vim proj_lab.conf 
server{
        listen 80;    # 80 为http的端口
        server_name s2aclab.ml;
        rewrite ^(.*)$ https://s2aclab.ml$1;    # 正则自动跳转
}

server{
        listen 443;    # 443为https端口 80 为http
        server_name s2aclab.ml;    # 服务器名称改为域名
        charset utf-8;

        ssl on;    # 开启ssl
        ssl_certificate /etc/nginx/cert/1_www.s2aclab.ml_bundle.crt;    # 公钥
        ssl_certificate_key /etc/nginx/cert/2_www.s2aclab.ml.key;    # 私钥
        ssl_session_timeout 5m;

        client_max_body_size 75M;       # max upload size

        location /static {
                alias /home/proj_lab/static_root;
        }
        location /media {
                alias /home/proj_lab/media;
        }
        # Finally, send all non-media requests to the Django server.
        location / {
                # socket transmit not http
                uwsgi_pass 127.0.0.1:8001;
                # the uwsgi_params file you installe
                include /etc/nginx/uwsgi_params;
        }

}

保存。测试是否正确

(py36_django) root@ip-172-31-15-248:/etc/nginx/sites-enabled# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重启nginx服务

(py36_django) root@ip-172-31-15-248:/etc/nginx/sites-enabled# service nginx restart

well done~