我的技术笔记

记录技术历程

keytool 创建 jks 格式证书,以及转换 p12

创建命令

1
keytool -genkeypair -alias [keyname] -keystore [demo.jks] -validity [365]

选择密钥算法 ECDSA

1
keytool -genkeypair -alias [keyname] -keystore [demo.jks] -validity [365] -keyalg ec
最佳实践:
store 密码 与 key 密码保持一致。    
密码长度大于8、包含大小写、含特殊字符:`!@#$%^&*()-_=+\|[{}];:’”,.<>/?

检查校验

1
keytool -list -v -keystore [demo.jks]

1
2
# base64 格式
keytool -exportcert -alias [keyname] -keystore [demo.jks] | openssl sha1 -binary | openssl base64

转换 p12 格式

将使用 EC 算法的 jks 转换为 p12 格式

1
keytool -importkeystore -srckeystore [demo.jks] -srcstoretype JKS -deststoretype pkcs12 -destkeystore [demo.p12]

openssl 提取 p12 私钥

1
openssl pkcs12 -nodes -in [demo.p12] -out [demo.private.pem]

openssl 提取公钥

1
openssl pkey -in [demo.private.pem] -pubout -out [demo.public.pem]

生成 csr

1
keytool -certreq -alias [keyname] -keystore [demo.p12] -storetype pkcs12 -file [demo.csr]

获取镜像

获取 docker Sonatype Nexus3 镜像,最新版本

最新版本
1
docker pull sonatype/nexus3
指定版本
1
docker pull sonatype/nexus3:3.30.1

预期

docker 环境 目录 /nexus-data 映射宿主目录 /opt/maven/sonatype-work-docker/nexus3
docker 环境 默认端口 8081 映射宿主端口 5430

映射宿主目录中存在文件和目录的情况
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 先启动一个默认的 sonatype/nexus3 容器
docker run -p 5430:8081 --name nexus3 sonatype/nexus3:3.30.1

# 进入对应容器
docker exec -i -t xxxxxx /bin/bash

# 查询用户和用户组的 ID
cat /etc/passwd
nexus:x:200:200:Nexus Repository Manager user:/opt/sonatype/nexus:/bin/false
# sonatype/nexus3 容器中,默认的 nexus 对应的用户id为 200

# 删除这个默认容器
docker container rm -f xxx

# 修改宿主目录的 owner
chown -R 200:200 /opt/maven/sonatype-work-docker/nexus3

运行

直接运行
1
2
3
4
docker run -p 5430:8081 --name nexus3 sonatype/nexus3:3.30.1

#docker 环境 自定义端口 5432 映射宿主端口 5432
docker run -p 5432:5432 --name nexus3 -v /opt/maven/sonatype-work-docker/nexus3:/nexus-data sonatype/nexus3:3.30.1
后台运行
1
2
3
4
5
6
7
8
9
# sonatype/nexus3 默认用户 admin ,密码存储在数据文件夹下的 admin.password 
docker run -d -p 5430:8081 --name nexus3 --restart=always sonatype/nexus3:3.30.1

# 映射宿主目录 /opt/maven/sonatype-work-docker/nexus3
docker run -d -p 5430:5432 --name nexus3 --restart=always -v /opt/maven/sonatype-work-docker/nexus3:/nexus-data sonatype/nexus3:3.30.1


#调整 Java VM 参数
docker run -d -p 5430:5432 --name nexus3 --restart=always -v /opt/maven/sonatype-work-docker/nexus3:/nexus-data -e INSTALL4J_ADD_VM_PARAMS="-Xms2g -Xmx2g -XX:MaxDirectMemorySize=3g" sonatype/nexus3:3.30.1

停止-需要时间关闭数据库

1
docker stop --time=120 nexus3

创建证书秘钥

1
openssl genrsa -des3 -out server.key 2048

按要求两次输入相同的密码,以后使用该秘钥文件-server.key 都会要求输入密码。
如果想免除输入密码的步骤,可以使用以下命令移除秘钥文件的密码(考虑安全因数,建议不要这样处理)

1
openssl rsa -in server.key -out server.key_nopass

创建证书申请文件

1
openssl req -new -key server.key -out server.csr

1
openssl req -new -key server.key_nopass -out server.csr

依次选择并输入信息,建议 Common Name 输入服务器 hostname,比如 IP

创建CA证书

1
openssl req -new -x509 -key server.key -out server_ca.crt -days 3650

1
openssl req -new -x509 -key server.key_nopass -out server_ca.crt -days 3650

创建证书

创建自当前日期起有效期为期十年的服务器证书 server.crt

1
openssl x509 -req -days 3650 -in server.csr -CA server_ca.crt -CAkey server.key -CAcreateserial -out server.crt

1
openssl x509 -req -days 3650 -in server.csr -CA server_ca.crt -CAkey server.key_nopass -CAcreateserial -out server.crt

Nginx 部署

打开 Nginx 网站配置文件,配置 ssl_certificate 和 ssl_certificate_key

1
2
3
4
5
6
7
8
9
10
11
12
server {

...
listen 443;
ssl on;
#配置证书位置
ssl_certificate /opt/web.ser.cert/server.crt;
#配置秘钥位置
ssl_certificate_key /www/web.ser.cert/server.key;

...
}

Openssl 爆漏洞需升级到 1.1.1g 版本,下载地址

检查一下版本是否已更新到 1.1.1g

1
2
3
openssl version

> OpenSSL 1.1.1f 31 Mar 2020

既然没有,那就更新 Openssl

下载 Openssl 源码

1
cd /opt
1
wget https://www.openssl.org/source/openssl-1.1.1j.tar.gz

解压

1
tar -zxvf openssl-1.1.1j.tar.gz
1
cd openssl-1.1.1j

编译前配置默认安装目录

1
./config --prefix=/usr/local/openssl

检查配置

1
./config -t

编译 ^_^ 需 make 和 gcc

1
make

安装

1
make install

核对安装结果

1
2
3
openssl version

>OpenSSL 1.1.1f 31 Mar 2020

主路由

1
2
3
4
5
6
# IPv4
172.22.88.1
#DHCPv4 范围
172.22.88.5~172.22.88.254
# 预留旁路有 IPv4
172.22.88.2

旁路由

连接旁路由 Lan 与电脑,进入 旁路由 192.168.1.1

选择 【网络】-【接口】-[LAN]-【基本设置】

1
2
3
4
5
6
7
8
9
10
# IPv4
172.22.88.2
# IPv4 子网掩码
255.255.255.0
# IPv4 网关
172.22.88.1
# IPv4 广播
172.22.88.255
# 使用自定义的 DNS
172.22.88.1

DHCP 服务器,勾选【忽略此接口】

选择 【网络】-【接口】-[LAN]-【物理设置】- 取消桥连

!!!点击【保存】!!!不要点击【保存与应用】
!!!点击【保存】!!!不要点击【保存与应用】
!!!点击【保存】!!!不要点击【保存与应用】

选择 【网络】-【防火墙】-【自定义规则】,在最后添加以下代码

1
iptables -t nat -I POSTROUTING -j MASQUERADE

点击【重启防火墙】

点击右上角【未保存的的配置】- 选择【保存并应用】,等待结果
如提示配置已回滚,选择【强制应用】,再等待结果。如提示如下,则说明保存应用成功

1
2
无法连接到设备
应用配置更改后,无法重新获得对设备的访问权限。如果您更改了网络相关设置如 IP 地址或无线安全证书,则可能需要重新连接。

至此,旁路由的设置告一段落,将主路由的 LAN2 与旁路由的 LAN1 端口连接,再插拔一下 旁路由LAN2 与 电脑的网线,能获取到主路由配置的IP后,再访问旁路由 172.22.88.2 能打开旁路由管理后台,则说明配置成功。

0%