ssl certificate self signed on nginx and fastapi for centos8
(อันนี้เป็น intro ไม่สนก็ข้ามไปจ๊ะ ) นั้นละครับ เมือเจอ case งาน ก็เลยต้องบันทึกสักหน่อย
ผมเจอว่าต้องทำ ssl certificate self signed ให้กับ nginx และ fastapi บน centos8
โดยขอลำดับจากสร้าง ssl certificate self signed ตามนี้
ทำการติดตั้ง mod_ssl
yum install mod_ssl
จากนั้นสร้าง ssl certificate
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout xxx.key -out xxx.crt
จากนั้นจะมีการถามคำถามก็ตอบๆไป ต่อมาก็ ดูที่อยู่ของ xxx.crt และ xxx.key ไว้
ต่อมา ก็ไปตั้งค่าที่ nginx ที่ไฟล์ /etc/nginx/nginx.conf แล้วไปใส่ของ https ที่เป็น port 443 ตามนี้
server {
listen 443 ssl http2 default_server;
#listen [::]:443 ssl http2 default_server;
server_name _;
root /usr/share/nginx/html;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE+RSAGCM:ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:!aNULL!eNull:!EXPORT:!DES:!3DES:!MD5:!DSS;
ssl_certificate /home/ssl/xxx.crt;
ssl_certificate_key /home/ssl/xxx.key;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
index index.php index.html index.htm;
try_files $uri $uri/ =404;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
โดยที่ ssl_certificate กับ ssl_certificate_key ก็คือไฟล์ที่เราสร้างมาตามที่อยู่นั้น
จากนั้นลอง restart service nginx ดู แล้วทดสอบ
ต่อมาเป็นการตั้งค่าที่ fast api
โดยตัวอย่างนี้จะเป็นที่ ไฟล์ python ที่ทำไว้
import uvicorn if __name__ == '__main__': uvicorn.run("app.main:app", host="0.0.0.0", port=8432, reload=True, ssl_keyfile="/home/ssl/xxx.key", ssl_certfile="
/home/ssl/
xxx.crt" )
สรุปคือ ที่ ssl_keyfile และ
ssl_certfile คือไฟล์ที่สร้างมา หลังจาก ใส่แล้วก็ลอง run ดูครับ