zoukankan      html  css  js  c++  java
  • 部署Mvc Core SSL网站到Centos并用Nginx作为*

    1. 先在本地比如~/Downloads下建立MVC项目

    2. 生成mvc使用的ssl证书


    2.1. 生成.key文件

    openssl genrsa -des3 -out server.key 2048
    

      

    中间会提示输入密码(重复输入两次),要记住这个密码
    这时会在目录下生成server.key文件。

    2.2. 生成.crt文件
    openssl req -new -x509 -key server.key -out server.crt -days 3650
    

      

    会提示输入server.key的密码
    开始输入Country Name:CN
    State or Province Name:SH
    Locality Name:shanghai
    Organization Name:这个可以忽略
    Organizational Unit Name:这个可以忽略
    Common Name:这个可以忽略
    Email Address:填写一个邮箱地址
    这时会在目录下生成server.crt文件。

    2.3. 生成.pfx文件
    openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt
    

      

    提示输入server.key文件的密码
    提示输入即将生成的.pfx文件的密码(需要输入两次)
    这时会在目录下生成server.pfx文件。

    3. 修改代码以启用https和使用证书
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Net;
    using System.Threading.Tasks;
    using Microsoft.AspNetCore;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Logging;
    
    namespace RemoteDemo
    {
        public class Program
        {
            public static void Main(string[] args)
            {
                CreateWebHostBuilder(args).Build().Run();
            }
    
            public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
                WebHost.CreateDefaultBuilder(args)
                    .UseKestrel(options =>
                    {
                        options.Listen(IPAddress.Any, 5000);
                        options.Listen(IPAddress.Any, 5001, listenOptions =>
                        {
                        //之前生成的pfx文件拷贝到网站根目录,然后在IDE中设置"always copy"
                            listenOptions.UseHttps("server.pfx", "pfx password");
                        });
                    })
                    .UseStartup<Startup>();
        }
    }
    

      

    4. 安装nginx
    sudo yum install epel-release
    
    sudo yum install nginx
    //配置自启动
    sudo systemctl enable nginx  
    sudo systemctl start nginx
    //配置防火墙开放80和443
    sudo firewall-cmd --permanent --zone=public --add-service=http 
    sudo firewall-cmd --permanent --zone=public --add-service=https
    sudo firewall-cmd --reload
    

      

    5. 在服务器上生成nginx要使用的SSL证书
    sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt
    
    sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
    

      

    6.修改Nginx的配置文件,默认在/etc/nginx/下
    vim /etc/nginx/nginx.conf
    

      

    示例如下

    # For more information on configuration, see:
    #   * Official English Documentation: http://nginx.org/en/docs/
    #   * Official Russian Documentation: http://nginx.org/ru/docs/
    
    user nginx;
    worker_processes auto;
    error_log /var/log/nginx/error.log;
    pid /run/nginx.pid;
    
    # Load dynamic modules. See /usr/share/nginx/README.dynamic.
    include /usr/share/nginx/modules/*.conf;
    
    events {
        worker_connections 1024;
    }
    
    http {
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile            on;
        tcp_nopush          on;
        tcp_nodelay         on;
        keepalive_timeout   65;
        types_hash_max_size 2048;
    
        include             /etc/nginx/mime.types;
        default_type        application/octet-stream;
    
        # Load modular configuration files from the /etc/nginx/conf.d directory.
        # See http://nginx.org/en/docs/ngx_core_module.html#include
        # for more information.
        include /etc/nginx/conf.d/*.conf;
    
        server {
            listen       80 default_server;
            listen       [::]:80 default_server;
            server_name  _;
            root         /usr/share/nginx/html;
    
            # Load configuration files for the default server block.
            include /etc/nginx/default.d/*.conf;
    
            location / {
            }
    
            error_page 404 /404.html;
                location = /40x.html {
            }
    
            error_page 500 502 503 504 /50x.html;
                location = /50x.html {
            }
        }
        
        server {
                listen 443 ssl http2 default_server;
                listen [::]:443 ssl http2 default_server;
                ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
                ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
                ssl_dhparam /etc/ssl/certs/dhparam.pem;
                     location / {
                         proxy_pass http://localhost:5000;
                         proxy_http_version 1.1;
                         proxy_set_header Upgrade $http_upgrade;
                         proxy_set_header Connection keep-alive;
                         proxy_set_header Host $host;
                         proxy_cache_bypass $http_upgrade;
                     }
        }
    
    # Settings for a TLS enabled server.
    #
    #    server {
    #        listen       443 ssl http2 default_server;
    #        listen       [::]:443 ssl http2 default_server;
    #        server_name  _;
    #        root         /usr/share/nginx/html;
    #
    #        ssl_certificate "/etc/pki/nginx/server.crt";
    #        ssl_certificate_key "/etc/pki/nginx/private/server.key";
    #        ssl_session_cache shared:SSL:1m;
    #        ssl_session_timeout  10m;
    #        ssl_ciphers HIGH:!aNULL:!MD5;
    #        ssl_prefer_server_ciphers on;
    #
    #        # Load configuration files for the default server block.
    #        include /etc/nginx/default.d/*.conf;
    #
    #        location / {
    #        }
    #
    #        error_page 404 /404.html;
    #            location = /40x.html {
    #        }
    #
    #        error_page 500 502 503 504 /50x.html;
    #            location = /50x.html {
    #        }
    #    }
    
    }
    

      

    修改完毕后验证配置是否有效

    nginx -t
    

      

    重新启动nginx服务

    systemctl restart nginx
    

      

    7. 使用dotnet XXX.DLL启动mvc core项目,然后开启客户端浏览器访问即可
  • 相关阅读:
    以AO方式给SceneControl控件设置BaseHeight
    TreeView只能选中一个节点
    Excel导出DataTable
    TOCControl右键菜单
    Arcgis Engine符号化相关
    shapefile文件锁定问题
    ArcGIS符号库serverstyle文件编辑注意事项
    CentOS运维常用命令
    常用shell
    javascript浮点数相减、相乘出现一长串小数
  • 原文地址:https://www.cnblogs.com/linkanyway/p/deploy-nginx-mvc-core-ssl-certificate.html
Copyright © 2011-2022 走看看