局域网搭建SSL,使用HTTPS服务教程

这篇具有很好参考价值的文章主要介绍了局域网搭建SSL,使用HTTPS服务教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

局域网搭建SSL,使用HTTPS服务教程

1 相关证书文件格式

1.1 .csr(证书请求文件)

.csr 是证书请求文件(certificate signing request),是由 RFC 2986定义的PKCS10格式,包含部分/全部的请求证书的信息,比如,主题, 机构,国家等,并且包含了请求证书的公玥,这些被CA中心签名后返回一张证书。返回的证书是公钥证书(只包含公玥不含私钥)

1.2 .pem(容器格式,证书的加密格式)

.pem 是一种容器格式,可能仅包含公钥证书,也可以包含完整的证书链(包括公玥,私钥,和根证书)。也可能用来编码 CSR文件。

1.3 .key(私钥文件,私钥的加密格式)

.key 其实就是一个pem格式只包含私玥的文件,.key 作为文件名只是作为一个明显的别名。

pem和key 这两种格式 分别存储的是证书base64加密和私钥base64加密还有格式分割符,也就是说pem存的是证书,key 存的是私钥

1.4 .pkcs12 .pfx .p12(公私钥、证书)

pkcs即 RSA定义的 公玥密码学( Public-Key Cryptography Standards)标准,有多个标准 pkcs12只是其一,是描述个人信息交换语法标准。 有的文件直接使用其作为文件后缀名。这种文件包含公钥和私钥证书对,跟pem文件不同的是,它的内容是完全加密的。 用openssl可以把其转换成包含公玥和私玥的 .pem 文件。命令: openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes

1.5 .der(一种编码方案)

其实der不是一种文件格式。der 是ASN.1 众多编码方案中的一个,使用der编码方案编码的pem文件。der 编码是使用二进制编码,一般pem文件使用的是base64进行编码,所以完全可以把der编码的文件转换成pem文件,命令: openssl x509 -inform der -in to-convert.der -out converted.pem 使用der编码的pem文件,后缀名可以为.der,也可以为以下格式:

1.6 .cert .cer .crt(证书)

pem或者der编码格式的证书文件,这些文件后缀名都会被windows 资源管理器认为是证书文件。有趣的是, .pem 反而不会被认为是证书文件。

1.7 .crl(证书吊销列表)

certificate revocation list,证书吊销列表

局域网搭建SSL,使用HTTPS服务教程

2 实战(SpringBoot+tomcat)

2.1 创建证书

jdk自带的keytool可以帮助我们生成证书

  1. win+R输入cmd打开命令行
keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keyword.p12 -validity 3650

输入密码(密码是隐藏的,直接输入即可),剩下的可以不输,直接全部回车,执行完之后会在当前文件夹内生成一个keyword.p12的文件
局域网搭建SSL,使用HTTPS服务教程

2.2 拷贝证书到项目,并配置

  1. 拷贝证书到resources目录下
    局域网搭建SSL,使用HTTPS服务教程
  2. 在pom.xml中进行配置

放到<build>标签下

<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
        <excludes>
            <exclude>**/*.p12</exclude>
        </excludes>
    </resource>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>false</filtering>
        <includes>
            <include>**/*.p12</include>
        </includes>
    </resource>
</resources>
  1. 配置application.properties
#SSL
server.ssl.key-store=classpath:keyword.p12
server.ssl.key-store-password=cmd窗口时设置的密钥库口令
server.ssl.keyStoreType=PKCS12
server.ssl.keyAlias=tomcat

2.3 添加配置类,重定向将http转为https

  1. 在application.properties中添加配置
http.port=8080
server.port=8090

局域网搭建SSL,使用HTTPS服务教程
2. 添加配置类

@Configuration
public class HttpToHttpsConfig extends WebMvcConfigurerAdapter {
    @Value("${server.port}")
    private int serverPort;

    @Value("${http.port}")
    private int serverHttpPort;

    /**
     * 解决跨域问题
     * @param registry
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                // 设置允许跨域请求的域名
//                .allowedOrigins("*")    // 注意此处,当allowCredentials为ture时候,此处不能有*
                .allowedOriginPatterns("/**")
                //是否允许证书
                .allowCredentials(true)
                .allowedOrigins("*")
                .allowedMethods("GET", "POST", "OPTIONS", "PUT")
                .allowedHeaders("Content-Type", "X-Requested-With", "accept", "Origin", "Access-Control-Request-Method",
                        "Access-Control-Request-Headers","accessToken")
                .exposedHeaders("Access-Control-Allow-Origin", "Access-Control-Allow-Credentials")
                .maxAge(3600);
    }

    @Bean
    public ServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory () {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint securityConstraint = new SecurityConstraint();
                securityConstraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                securityConstraint.addCollection(collection);
                context.addConstraint(securityConstraint);
            }
        };

        tomcat.addAdditionalTomcatConnectors(initiateHttpConnector());
        return tomcat;
    }

    private Connector initiateHttpConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        //需要重定向的http端口
        connector.setPort(serverHttpPort);
        connector.setSecure(false);
        //设置重定向到https端口
        connector.setRedirectPort(serverPort);
        return connector;
    }
}

2.4 测试效果

  1. 编写一个简单的controller
@RestController
public class TestController {

    @GetMapping("/test")
    public String testHttps(){
        return "success...";
    }
}
  1. 浏览器输入url,回车,查看结果
http://localhost:8080/test

局域网搭建SSL,使用HTTPS服务教程

3 Nginx搭建https服务(linux)

3.1 安装Nginx

搭建nginx之前,我们需要先让linux服务器上有nginx

# 查看当前电脑上是否有nginx
find / -name "nginx"

如果没有,可通过以下步骤来安装nginx:

nginx安装的时候不指定安装目录,会默认安装到/usr/local/nginx下

  1. 安装所需依赖
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
  1. 下载nginx
mkdir /temp
cd /tmp/
wget http://nginx.org/download/nginx-1.13.7.tar.gz
  1. 解压nginx
tar -xvf nginx-1.13.7.tar.gz
  1. 创建目标文件夹
mkdir -p /usr/zi/nginx
  1. 进入压缩包所在路径,并指定编译路径
cd /tmp/nginx-1.13.7
./configure --prefix=/usr/zi/nginx
make && make install

此时在/usr/zi/nginx下将会生成conf、sbin等文件夹

  1. 指定配置文件
/usr/zi/nginx/sbin/nginx -c /usr/zi/nginx/conf/nginx.conf
  1. 关闭防火墙
systemctl stop firewalld

# 关闭防火墙开机自启动
systemctl disable firewalld
  1. 启动nginx
/usr/zi/nginx/sbin/nginx -s reload

如果出现:nginx: [error] invalid PID number “” in “/usr/zi/nginx/logs/nginx.pid”,指定配置文件路径,然后重启nginx

# 指定nginx配置文件路径
/usr/zi/nginx/sbin/nginx -c /usr/zi/nginx/conf/nginx.conf
 
# 重启nginx
./nginx -s reload
  1. 在浏览器直接输入自己的ip,回车,出现Welcome to nginx!则表示nginx运行成功

3.2 nginx添加SSL模块

在添加模块之前,首先查看nginx是否有SSL模块

# 进入nginx的sbin目录(根据自己的位置,修改路径)
cd /usr/zi/nginx/sbin

# 查看是否有ssL模块【注意,是大写的V,小写的是显示版本号】
./nginx -V

如果出现 (configure arguments: --with-http_ssl_module), 则已安装,否则需要执行下面命令安装SSL

局域网搭建SSL,使用HTTPS服务教程

可以看到,当前我的nginx是不存在SSL模块的,下面我将安装SSL模块。
①进入nginx源码所在位置(nginx解压缩的目录),我的是在/tmp/nginx-1.13.7

./configure --prefix=/usr/zi/nginx --with-http_stub_status_module --with-http_ssl_module

②执行make,重新,切记不要执行make install,否则会重新安装

make

执行结束后,在nginx的解压缩目录(我的是在/temp/nginx-1.13.7)将会出现objs文件夹,文件夹内存在nginx文件

局域网搭建SSL,使用HTTPS服务教程

局域网搭建SSL,使用HTTPS服务教程

③替换sbin目录

接下来使用新的nginx文件替换掉之前安装目录sbin下的nginx,注意这里的替换的时候可以先将之前的文件备份下,停掉nginx服务

# 进入nginx的sbin目录
cd /usr/zi/nginx/nginx

# 停止服务
./nginx -s stop

# 替换sbin目录
cp /temp/nginx-1.13.7/objs/nginx /usr/zi/nginx/sbin

④进入nginx安装目录,查看结果

cd /usr/zi/nginx/sbin

#注意这里是大写的V,小写的只显示版本号
./nginx -V  
#出现了configure arguments: --with-http_ssl_module 证明已经安装成功

局域网搭建SSL,使用HTTPS服务教程

3.3 给nginx配置SSL证书

①创建证书,并上传
  • 拥有ssl证书,没有的可以去阿里购买或者免费申请一年【这里是内网环境,因此我们可以本地生成证书】
  • 解压缩下载好的证书(证书一般是pem文件和key文件,这里名字可以随便改)
  • 将下载好的证书上上传到服务器,我将证书放在了root目录下的card文件夹

jdk中内置了一个keytool

JDK里面内置了一个数字证书生产工具:keytool。但是这个工具只能生成自签名的数字证书。所谓自签名就是指证书只能保证自己是完整的,没有经过非法修改的。但是无法保证这个证书是属于谁的(一句话:keytool没办法签发证书,而openssl能够进行签发和证书链的管理)

我们可以在本地下载一个openssl工具:下载地址
局域网搭建SSL,使用HTTPS服务教程
下载完之后,进入安装目录的bin路径,便可以使用,当然也可以配置好环境变量,更方便。

②配置nginx的conf文件

参考文章:
https://blog.csdn.net/jasstool/article/details/98627062
https://blog.csdn.net/HD243608836/article/details/127441701
https://blog.csdn.net/xkdlzy/article/details/113380587
https://www.cnblogs.com/ambition26/p/14077773.html文章来源地址https://www.toymoban.com/news/detail-431556.html

到了这里,关于局域网搭建SSL,使用HTTPS服务教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 傻瓜式:局域网内部搭建DNS域名解析服务

    首先安装所需的yum源 1、yum install -y bind 2、yum install -y bind-utils           3、yum -y install vim 4、修改DNS主配置文件 [root@localhost /]# vim /etc/named.conf 5、修改这两行的内容 listen-on port 53 { any; }; allow-query     { any; };                     6、给本机的DNS指向自己的dns服务

    2024年02月11日
    浏览(34)
  • 【SSL证书】使用mkcert创建局域网或单机可信任Windows格式证书

    初学者对SSL证书的理解可能非常模糊。所谓SSL证书,其实它包含两个方面,一是根证书,二是HTTPS的证书,HTTPS证书合法性由其根证书来进行认定。几大证书供应商的根证书一般都预置在系统中了,所以给人的错觉就是只知HTTPS证书,而不清楚其根证书。所以,我们的目的是有

    2024年02月08日
    浏览(34)
  • Windows下搭建局域网内简易git服务器

    由于和朋友小规模制作项目,又使用了UE5这样的庞然大物,准备整一个本地轻量化一些git版本管理。 查阅资料是发现git的daemon这个功能,经过ChatGPT的误导走了很多弯路,这边记录下来以供参考。 Git Daemon是一个简单快速的git服务器形式,默认不具备加密通讯和加密仓库功能。

    2023年04月27日
    浏览(32)
  • 内网穿透NPS和宝塔Nginx配合使用,开启SSL访问本地局域网网络

    并非为了教学,仅供自己记录,方便下次用。所以内容不会刻意花时间写的很细节详细。 1. 服务器NPS配置 NPS install安装后,配置文件会在其他位置,通过是 /etc/nps/nps.conf 目录。 找到进行修改,主要修改的是 http_proxy_port 和 https_proxy_port ,它们使用的端口是80和443,肯定是和

    2024年02月10日
    浏览(37)
  • Windows 10搭建FTP服务器实现局域网文件共享

    打开“控制面板”→单击“程序”→单击“启动或关闭Windoes功能” 在Internet information Services下勾选FTP服务和IIS相关服务,如下图所示: 勾选完成后单击“确定” 加载完成后重启电脑 打开“控制面板”→单击“管理工具”→单击“IIS管理器”,如下图所示: 右击“网站”→

    2024年02月03日
    浏览(41)
  • 如何在局域网内搭建FTP服务器,实现信息共享

    如何在局域网内搭建FTP服务器,实现信息共享   首先打开 控制面板 ,点击 程序  点击程序,点击 启用或关闭windows功能 ,找到 lnternet lnformation Services 点击前面小“+”号 选中 FTP服务器 和 WEB管理工具 ,然后点击确定,提示界面出现Windows已完成请求的更改后,点击关闭 右键

    2024年02月08日
    浏览(48)
  • 银河麒麟服务器系统搭建本地和局域网yum源

            yum主要管理基于rpm的软件包,它可以自动升级、安装、删除rpm软件包,同时它还能够自动查找并解决rpm包之间的依赖关系,并且无需管理员逐个、手工的去安装每一个rpm包。yum可以从一个或多个repo文件中配置的repo仓库,通过http或ftp协议从repo仓库获得必要的信息

    2024年02月06日
    浏览(46)
  • 10分钟搭建局域网文件共享服务器,百兆网络+云盘服务+外网访问

    今天来聊一下公司内部如何通过云盒子实现局域网文件共享:百兆网络+云盘服务+旧服务器+外网访问。 网络测试环境是百兆,千兆网会更强。 各终端的数据是实时同步的,自带内网穿透技术,随时可以通过互联网访问局域网内文件服务器,当然也可以禁掉互联网访问,仅在

    2024年02月09日
    浏览(40)
  • 计算机 - - - windows电脑搭建FTP局域网文件传输服务器

    控制面板,打开程序和功能,启用或关闭Windows功能。 勾选这几个 然后点确定,应用更改成功后重启电脑生效。 打开IIS管理器。 添加ftp站点。 输入ftp站点名称,选择文件存放的物理路径。 ip地址设置为当前电脑的ip地址,端口默认21,无SSL。 身份验证选择匿名,基本(不选

    2024年02月07日
    浏览(41)
  • [保姆级]使用SoftEther搭建异地局域网(windows)

    最近在跟小伙伴进行一个前后端分离开发的项目(在各自家中进行), 但是我们都不在一个局域网, 那么怎么办呢? 当然是搭建自己的虚拟局域网啦! SoftEther 是什么? 该软件是一个能虚拟网卡和集线器(HUB)的工具,只要可以访问互联网,都可以使用它来组建远程局域网。-----百度

    2024年03月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包