您现在的位置是:首页 >学无止境 >HTTP服务转HTTPS服务网站首页学无止境
HTTP服务转HTTPS服务
简介HTTP服务转HTTPS服务
新年头一天上班,为复工摸鱼,必须将重复的配置工作进行自动化掉,目前遇到了http到https的转换问题,编写了脚本来快速启动,脚本在文末需要自取,以下是执行过程,以go-file这个http服务为例
注意: 自己生成的证书会报隐私问题,直接忽略即可
1. 首先运行脚本来生成nginx配置文件、证书文件以及docker-compose.yaml文件
root@bright-pc# ./general_crt.sh
create cert folder
create nginx config foloer
input your cert password:123456 // 输入证书密码
Enter your domain [www.example.com]: www.123.com // 输入域名
Create server key...
Create server certificate signing request...
Remove password...
writing RSA key
Sign SSL certificate...
Certificate request self-signature ok
subject=C = US, ST = Mars, L = iTranswarp, O = iTranswarp, OU = iTranswarp, CN = www.123.com
genernal nginx config
Enter you http service base url:http://192.168.1.111:13000 // 输入需要转换服务的域名或者地址
input https service port:8443 // 输入转换后https服务的端口号
genernal docker-compose.yaml
Enter the Docker port mapping, which defaults to the same port as the HTTPS service[8443]: // 输入docker映射后的端接口,默认与https服务端接口一致
root@bright-pc# ls //查看生成的文件
docker-compose.yaml general_crt.sh nginx pass_temp.txt
2. 启动docker-compose 文件
docker compose up -d && docker compose logs -f
3. 查看启动日志
4. 测试,因为我属于通过ssh代理访问,直接代理后访问本地 https://127.0.0.1:8443 即可
访问即可成功
代码如下:
#!/bin/sh
# check folder exists
CERT_PATH="./nginx/cert"
if [ -d $CERT_PATH ];then
echo "$CERT_PATH exists"
else
echo "create cert folder"
mkdir -p $CERT_PATH
fi
NGINX_CONFIG_FOLDER="./nginx/conf.d"
if [ -d $NGINX_CONFIG_FOLDER ];then
echo "nginx config folder exists"
else
echo "create nginx config foloer"
mkdir -p $NGINX_CONFIG_FOLDER
fi
# create self-signed server certificate:
read -p "input your cert password:" CERT_PASS
PASS_FILE="./pass_temp.txt"
echo "$CERT_PASS" > $PASS_FILE
read -p "Enter your domain [www.example.com]: " DOMAIN
DOMAIN=${DOMAIN:-"www.example.com"}
# check cert exists
if [ -d $CERT_PATH/$DOMAIN.csr ];then
echo "cert file already exists"
exit [5]
else
echo "Create server key..."
fi
openssl genrsa -des3 -out $CERT_PATH/$DOMAIN.key -passout pass:$CERT_PASS 2048
echo "Create server certificate signing request..."
SUBJECT="/C=US/ST=Mars/L=iTranswarp/O=iTranswarp/OU=iTranswarp/CN=$DOMAIN"
openssl req -new -subj $SUBJECT -key $CERT_PATH/$DOMAIN.key -out $CERT_PATH/$DOMAIN.csr -passin file:$PASS_FILE
echo "Remove password..."
mv $CERT_PATH/$DOMAIN.key $CERT_PATH/$DOMAIN.origin.key
openssl rsa -in $CERT_PATH/$DOMAIN.origin.key -out $CERT_PATH/$DOMAIN.key -passin file:$PASS_FILE
echo "Sign SSL certificate..."
openssl x509 -req -days 3650 -in $CERT_PATH/$DOMAIN.csr -signkey $CERT_PATH/$DOMAIN.key -out $CERT_PATH/$DOMAIN.crt
echo "genernal nginx config"
read -p "Enter you http service base url:" LOCAL_HTTP_SERVICE
# check nginx config exiss
if [ -f $NGINX_CONFIG_FOLDER/default.conf ];then
read -p "nginx config already exists,rewrite(yes/no)? no" OP_STATUS
OP_STATUS=${OP_STATUS:-"NO"}
case $OP_STATUS in
[nN][oO]|[nN])
echo "exit by user"
exit 0
;;
[yY][eE][sS]|[yY])
echo "genernal nginx config"
;;
*)
echo "Invalid select"
exit 5
esac
fi
read -p "input https service port:" HTTPS_PORT
cat > $NGINX_CONFIG_FOLDER/default.conf <<EOF
server {
listen $HTTPS_PORT ssl;
server_name $DOMAIN;
ssl_certificate /etc/nginx/cert/$DOMAIN.crt;
ssl_certificate_key /etc/nginx/cert/$DOMAIN.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
location / {
proxy_pass $LOCAL_HTTP_SERVICE;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
EOF
echo "genernal docker-compose.yaml"
read -p "Enter the Docker port mapping, which defaults to the same port as the HTTPS service[$HTTPS_PORT]:" DOCKER_MAPPING_PORT
DOCKER_MAPPING_PORT=${DOCKER_MAPPING_PORT:-$HTTPS_PORT}
cat > ./docker-compose.yaml <<EOF
version: '3.9'
services:
http_to_https:
image: nginx:latest
container_name: http_to_https_container
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/cert:/etc/nginx/cert
ports:
- "$DOCKER_MAPPING_PORT:$HTTPS_PORT"
restart: unless-stopped
EOF
又是摸鱼的一天
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。