• 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
    
  • 相关阅读:
    git保存用户名密码的方式
    解决HP电脑播放视频,暂停后再次播放,前几秒钟会没有声音
    我们本想通过网络了解广袤的世界,而不是陷入推荐的漩涡
    cnblogs回来了
    mysql commit和事务
    服务器重启crontab服务
    linux多个命令行执行
    quick bi 配置即席查询sql 参数
    python 不定长参数
    python 和 mysql 的时间格式化
  • 原文地址:https://www.cnblogs.com/liliangel/p/14266981.html
Copyright © 2020-2023  润新知