• https服务


    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
    本文链接:https://blog.csdn.net/bright69/article/details/82664431
    配置完全免费的https服务器
    最近想开发一个微信小程序,使用微信官方提供的开发工具,UI部分处理很方便,但涉及调用后台时,后台服务器要求是https的合法域名(如下图)。

    开发阶段,不想浪费钱,因此找办法配置https服务器。

    当前情况、问题及解决方案
    我的后台是centos 7+jdk 1.8+tomcat 9.0.11,位于公司内网,没有公网IP(公司内网的公网出口IP是变化的)、域名和证书。
    注:我的服务器的内网IP为:192.168.1.230
    那么,为了配置可用的https服务器,我需要解决如下几个问题:
    1.我的网站需要一个域名,通过该域名可以访问到我的服务器(类似于花生壳)
    2.Https需要的ssl证书
    为解决上述问题,准备采用frp来实现免费域名+内网穿透,采用Let’s Encrypt1提供的免费ssl证书
    实现思路

    1.使用frp申请一个域名,协议:http,用于后面申请ssl证书时使用。
    2.使用certbot-auto申请Let’s Encrypt提供的免费证书。
    3.申请证书成功后,配置tomcat的https参数使用刚申请的证书
    4.调整frp配置,由http改为https。
    5.测试
    6.配置微信小程序的合法域名

    实现步骤

    第一步:申请一个免费的域名,且能够支持内网穿透

    目前,提供免费域名的站点有很多,但支持内网穿透且免费的不多,我使用的是frp,frp的官网在:https://github.com/fatedier/frp。您可以再此获得程序和相关文档。
    frp提供了frps(服务器端)和frpc(客户端)两种部署模式。我要使用的是frpc。
    1.确定frps服务器
    网上frps服务器有很多,这里提供一个查看的地址:http://www.frps.top/
    确定frps服务器时需要注意服务器使用的软件版本号和开放的端口。
    软件版本号决定了你要使用的frpc的软件版本(可以从官网下载),您的应用所需的端口号要和站点开放的端口匹配。
    我选择的是:http://freenat.win,软件版本:0.16.1
    2.从官网下载对应版本的程序
    步骤如下:
    A:选择版本

    B:确定下载目标

    3.解压缩
    tar -zxvf frp_0.16.1_linux_amd64.tar.gz
    解压缩后的文件列表

    4.配置frpc
    使用frpc,配置文件为frpc.ini。文件中各项参数的说明请见:http://www.chuantou.org/47.html
    我的frpc.ini配置

    [common]
    server_addr = freenat.bid #frps服务器
    server_port = 7000 #frps服务器端口
    privilege_token = frp888 #客户端连接到FRPS服务端的验证密钥
    log_file = frpc.log #日志文件位置和名称
    log_level = info #日志等级,trace, debug, info, warn, error
    log_max_days = 7 #日志保存天数
    login_fail_exit = false #frpc连接frps失败后是否重连,true:重连
    protocol = kcp #连接frps服务端的通讯协议,可选:tcp、kcp。具体使用哪个,需要看站点说明

    [http_FrpcTest2018] #希望申请的域名[2]
    type = http #协议
    local_ip = 127.0.0.1 #站点所在服务器的地址[3]
    local_port = 8080 #站点使用的端口
    use_compression = true #frpc和frps之间的通信是否压缩[4]
    use_encryption = true #frpc和frps之间的通信是否加密[4]
    custom_domains = FrpcTest2018.freenat.bid #申请的域名
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    其中:
    http_FrpcTest20182
    local_ip3
    use_compression4
    use_encryption5
    5.启动

    # ./frpc -c ./frpc.ini & #后台模式
    1
    6.测试
    浏览器中输入域名“http://FrpcTest2018.freenat.bid”测试


    第二步:使用刚刚申请的域名申请证书
    我使用CertBot申请Let’s Encrypt免费ssl证书,官网地址:
    Let’ Encrypt官网:https://letsencrypt.org/
    CertBot官网:https://certbot.eff.org/
    1.下载CertBot-auto

    # wget https://dl.eff.org/certbot-auto
    1
    2.修改权限

    # chmod a+x certbot-auto
    1
    3.创建验证所需目录
    Let’s Encrypt申请过程中,会访问你的站点,并在站点上写入一些测试文件。这样就要求必须在申请前提前创建这些目录。
    目录的位置:站点根目录/.well-known/acme-challenge

    # mkdir -p /home/tomcat-9.0.11/webapps/.well-known/acme-challenge
    1
    4.申请证书

    # ./certbot-auto certonly --webroot -w /home/tomcat-9.0.11/webapps/ -d FrpcTest2018.freenat.bid
    1
    4.1 此后会自动下载安装一堆程序,确认即可。

    4.2 登记到期通知或安全警告时使用的邮箱

    4.3 同意使用协议

    4.4 是否共享邮箱

    5.证书
    申请成功,证书将存放在/etc/letencrypt/live/站点域名/目录下,如下图:


    第三步 配置tomcat的https参数
    从Let’s Encrypt申请的证书是pem格式。tomcat使用这种格式的证书需要apr、openssl、tomcat-native等一大堆支持,太麻烦,因此决定将其转换为tomcat使用的JKS格式,如下:
    1.转换格式

    1.1 pem转换为pfx
    # openssl pkcs12 -export -out /home/ssl/FrpcTest2018.pfx -in /etc/letsencrypt/live/frpctest2018.freenat.bid/fullchain.pem -inkey /etc/letsencrypt/live/frpctest2018.freenat.bid/privkey.pem
    Enter Export Password: [输入您的密码]
    Verifying - Enter Export Password: [输入您的密码]
    1.2 pfx转换为jks
    # keytool -importkeystore -srckeystore FrpcTest2018.pfx -destkeystore FrpcTest2018.jks -srcstoretype PKCS12 -deststoretype pkcs12
    Importing keystore FrpcTest2018.pfx to FrpcTest2018.jks...
    Enter destination keystore password: [输入您的密码]
    Re-enter new password: [输入您的密码]
    Enter source keystore password: [输入您的密码]
    Entry for alias 1 successfully imported.
    Import command completed: 1 entries successfully imported, 0 entries failed or cancelled
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    至此,格式成功由pem转换为JKS。

    2.拷贝证书到tomcat目录下

    # cp /home/ssl/FrpcTest2018.jks /home/tomcat-9.0.11/ssl/.
    1
    3.配置tomcat的server.xml文件
    在文件中增加如下内容:

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
    maxThreads="150" scheme="https" secure="true"
    clientAuth="false" sslProtocol="TLS"
    keystoreFile="/home/tomcat-9.0.11/ssl/FrpcTest2018.jks"
    keystorePass="您的密码" />
    1
    2
    3
    4
    5
    4.重启tomcat

    #./home/tomcat-9.0.11/bin/shutdown.sh
    #./home/tomcat-9.0.11/bin/startup.sh
    1
    2
    5.测试
    在浏览器中输入https://192.168.1.230:8443,结果页面如下:

    注意:
    1.此时的地址与申请证书时使用的地址(FrpcTest2018.freenat.bid)不同,因此会出现警告,不用理会。
    2.此时http://域名/仍然可以使用

    第四步 修改frp配置,使https穿透内网
    1.修改frpc.ini
    将前面的frpc.ini内容修改为如下:

    [common]
    server_addr = freenat.bid
    server_port = 7000
    privilege_token = frp888
    log_file = frpc.log
    log_level = info
    log_max_days = 7
    login_fail_exit = false
    protocol = kcp

    [http_FrpcTest2018]
    type = https #修改为https,使得https可以穿透内网
    local_ip = 127.0.0.1
    local_port = 8443 #https端口
    use_compression = true
    use_encryption = true
    custom_domains = FrpcTest2018.freenat.bid
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    2.重启frpc服务

    # ps -ef|grep frpc
    root 8520 983 1 17:09 pts/0 00:01:11 ./frpc -c ./frpc.ini
    root 9173 983 0 19:03 pts/0 00:00:00 grep --color=auto frpc
    # kill -9 8520
    [1] Killed ./frpc -c ./frpc.ini
    # /home/frp/frpc -c /home/frp/frpc.ini &
    1
    2
    3
    4
    5
    6
    3.测试
    此时,http://FrpcTest2018.freenat.bid/无法访问

    而https://FrpcTest2018.freenat.bid/则可以访问


    至此,微信小程序要求的合法域名站点侧配置完毕。可以使用小程序账号登录微信公众平台,配置合法域名了。

    最后,多啰嗦两句。
    第一,到现在,公网可以访问的服务只有https,私网可以访问的包括http和https。
    第二,后续如果想完全禁止http访问,在tomcat的server.xml文件中注释掉http端口(8080)即可。

    Let’s Encrypt提供的域名是免费的,有效期3个月,允许续期 ↩
    freenat.win的域名为二级域名,例如:FrpcTest2018.freenat.bid。最好多写一些,以免与其他申请冲突。 ↩
    如果站点在其他服务器上,填写那个服务器的IP地址。注意:站点服务器要和frpc所在的服务器在一个局域网内 ↩
    根据frps服务器要求决定 ↩
    根据frps服务器要求决定 ↩
    ————————————————
    版权声明:本文为CSDN博主「bright69」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/bright69/article/details/82664431

  • 相关阅读:
    小小不爽一下
    银行家算法的讨论
    【转】C字符串处理函数的实现
    Oracle物理存储结构文件
    RAC和ASM环境下修改控制文件control file
    TNS01190: The user is not authorized to execute the requested listener comm (oracle”用户没有启动lisener的权限?)
    RAC环境ASM存储新增控制文件的方法
    Oracle RAC 修改 spfile 文件位置
    Rman通过duplicate创建standby
    rman恢复手册
  • 原文地址:https://www.cnblogs.com/flintlovesam/p/11752146.html
Copyright © 2020-2023  润新知