mkcert生成自签名证书

将网络模式设置成桥接模式:

由于是通过Vmare虚拟机部署的Nginx服务,而虚拟机默认的NAT模式是不支持其他机器进行访问的,即只能本机访问(虚拟机或本机),所以要把他改成桥接模式,然后重启虚拟机,之后查看网卡的地址,这个地址稍后有大用,后面的nginx.conf和Dockerfile文件都用到了这个ip地址:

ifconfig
192.168.10.224

安装mkcert,用于生成自签名证书:

# 安装mkcert
sudo wget --no-check-certificate  https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64

sudo mv mkcert-v1.4.3-linux-amd64 /usr/local/bin/mkcert

sudo chmod +x /usr/local/bin/mkcert

mkcert -install

# 利用mkcert生成自签名证书,输出:localhost-key.pem localhost.pem
mkcert localhost

# 指定生成名称
mkcert -cert-file fd.pem -key-file fd-key.pem localhost

# 也可以同时为多个域名生成证书
mkcert -cert-file fd.pem -key-file fd-key.pem localhost 127.0.0.1

编辑nginx.conf文件,添加常用配置:

sudo mkdir /home/pc/Nginx
sudo chmod 777 /home/pc/Nginx
sudo vim /home/pc/Nginx/nginx.conf
# nginx.conf

events {
    use epoll;
    worker_connections 65535;
}

http{
    server {
        listen 80;
        server_name localhost 192.168.10.224;

        listen 443 ssl;
        ssl_certificate /pem/fd.pem;
        ssl_certificate_key /pem/fd-key.pem;
        ssl_session_cache shared:SSL:1m;

        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
        ssl_prefer_server_ciphers on;


        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
}

编写Dockerfile文件:

sudo vim /home/pc/Nginx/Dockerfile
# 使用官方的NGINX镜像作为基础镜像
FROM nginx

# 将本地的NGINX配置文件复制到容器中
COPY nginx.conf /etc/nginx/nginx.conf


# 安装mkcert,用于生成自签名证书
RUN apt-get update \
    && apt-get install -y wget \
    && wget --no-check-certificate  https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64 \
    && mv mkcert-v1.4.3-linux-amd64 /usr/local/bin/mkcert \
    && chmod +x /usr/local/bin/mkcert \
    && mkcert -install \
    && mkdir /pem \
    && cd /pem \
    && mkcert -cert-file fd.pem -key-file fd-key.pem localhost 192.168.10.224

构建Docker镜像:

docker build -f /home/pc/Nginx/Dockerfile -t m_nginx_img /home/pc/Nginx/

运行NGINX容器:

docker run --name=Nginx -d -p 80:80 -p 443:443 --restart=always m_nginx_img

docker run --name=Nginx -p 80:80 -p 443:443 -v /home/pc/Nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/pc/Nginx/log/:/var/log/nginx/ -d --restart=always m_nginx_img

docker run --name=Nginx -p 80:80 -p 443:443 -v /home/pc/Nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/pc/Nginx/log/:/var/log/nginx/ m_nginx_img

docker exec -it Nginx bash

验证NGINX部署:

http://localhost
https://localhost

将生成的证书从容器中拷贝出来备用:

docker cp Nginx:/pem/fd.pem /home/pc/Nginx/fd.pem

然后我们可以再通过shell客户端将Nginx/fd.pem拷贝到我们的电脑上

as配置CA证书:

若不配置服务器CA证书的话,则as访问https会报错。
先将 服务器提供的CA 证书拷贝到 res/raw/ 目录下
再在 `res/xml/` 目录下创建 `network_security_config.xml` 文件:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <!-- 引入 CA 证书 -->
        <trust-anchors>
            <certificates src="@raw/证书名(不含后缀,比如.pem)"/>
        </trust-anchors>
    </base-config>
</network-security-config>

注意填入的证书名称不要包含扩展名,比如fd.pem,则只需填入@raw/fd
高版本的as会不允许直接返回http,cleartextTrafficPermitted="true"的作用可以使得能正常访问http地址。

再在 `AndroidManifest.xml` 中应用网络安全性配置:

android:networkSecurityConfig="@xml/network_security_config"

<application
    android:networkSecurityConfig="@xml/network_security_config"
    ...>
    ...
</application>

或者直接用本地已经生成好的CA,由于本地和容器内的环境不一致,本地生成的证书放到容器内会出现解析出错,最好不要用下面这种方式,而是通过docker容器内部生成:

#Dockerfile
# 使用官方的NGINX镜像作为基础镜像
FROM nginx

# 将本地的NGINX配置文件复制到容器中
COPY nginx.conf /etc/nginx/nginx.conf

RUN mkdir /pem

# 将提前生成好的CA证书拷贝进容器
COPY localhost-key.pem localhost.pem /pem

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,188评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,464评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,562评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,893评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,917评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,708评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,430评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,342评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,801评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,976评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,115评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,804评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,458评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,008评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,135评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,365评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,055评论 2 355

推荐阅读更多精彩内容