linux小白从0开始搭建自己的个人网站(二)

服务器购买了3年,其中2020年基本没有去管他,最近https证书过期了,重新申请了证书,固做此记录:

配置https

使用阿里云免费提供的赛门铁克ssl证书,服务器类型:nginx

在aliyun搜索ssl,申请证书,一般第二天即可使用。

证书文件

下载的Nginx证书压缩文件解压后包含:

  • .pem:证书文件。PEM文件的扩展名为CRT格式。
  • .key:证书的密钥文件。申请证书时如果未选择自动创建CRS,则下载的证书文件压缩包中不会包含.key文件,需要您将自己手动创建的私钥文件拷贝到cert目录下。

上传到nginx的安装目录

[localhost nginx]# cd /usr/local/nginx/conf/
[localhost]# ls
cert  
[localhost]# cd cert/
3147716_xxxx.key  3147716_xxxx.pem

修改配置文件

打开Nginx安装目录/usr/local/conf/nginx.conf文件并找到以下属性:


# HTTPS server
  server {
  listen 443;
  server_name localhost;
  ssl on;
  ssl_certificate cert.pem;
  ssl_certificate_key cert.key;
  ssl_session_timeout 5m;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
  ssl_prefer_server_ciphers on;
  location / {
		
    .... 
  }

按照下文中注释内容修改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;   #站点目录。跟80端口的server保持一致!!!
        index index.html index.htm;   
        }
    }  

设置HTTP请求自动跳转HTTPS

设置HTTP请求自动跳转HTTPS。在需要跳转的HTTP站点下添加以下rewrite语句,实现HTTP访问自动跳转到HTTPS页面。

server {
    listen 80;
    server_name localhost; 
    rewrite ^(.*)$ https://$host$1 permanent;
    ....
}

重启

保存nginx.conf文件后退出,重启Nginx服务器。

可能出现问题

nginx: [emerg] unknown directive "ssl" in /usr/local/nginx/conf/nginx.conf:104

因为我们配置这个SSL证书需要引用到nginx的中SSL这模块,然而我们一开始编译的Nginx的时候并没有把SSL模块一起编译进去,所以导致这个错误的出现。

解决方案

// 来到nginx的包压缩的解压目录,我这里是nginx-1.13.7
cd /usr/local/nginx/nginx-1.13.7

//重新添加这个ssl模块
./configure --with-http_ssl_module  

// 如出错
yum -y install openssl openssl-devel

// 执行make命令,但是不要执行make install
make

可以查看到在nginx解压目录下,objs文件夹中多了一个nginx的文件,这个就是新版本的程序了。首先我们把之前的nginx先备份一下,然后把新的程序复制过去覆盖之前的即可。

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
cd /usr/local/nginx/nginx-1.13.7
cp objs/nginx /usr/local/nginx/sbin/nginx

查看是否有安装ssl模块成功

[localhost]# cd /usr/local/nginx/
[localhost nginx]# ./sbin/nginx -V

nginx version: nginx/1.13.7
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --with-http_ssl_module

最后如果出现如上,则SSL模块添加到Nginx的编译好了,这次重新启动则OK

[localhost]# cd /usr/local/nginx/sbin/
[localhost nginx]# ./nginx -s reload

如果重启出现

[localhost nginx]# ./nginx -s reload
nginx: [error] open() "/usr/local/Nginx/logs/Nginx.pid" failed(2:No such file or directory)

//解决
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

在阿里云后台开启443端口

切记这个,(一)里面有说明怎么开启操作步骤。
阿里云开启80端口

测试

浏览器访问helijun.com.cn 可以看到已经是https了,大功告成!

安装node

// 执行命令
curl -sL https://rpm.nodesource.com/setup_8.x | bash -

sudo yum install -y nodejs

node -v
posted @ 2021-01-12 14:56  微人类  阅读(281)  评论(0编辑  收藏  举报