ở writeup này đang hướng dẫn tôi triển khai bằng g...
Créé le : 20 mai 2026
Créé le : 20 mai 2026
ở writeup này đang hướng dẫn tôi triển khai bằng giao diện dòng lệnh nhưng tôi muốn làm qua GUI
hãy hướng dẫn chi tiết lại cách triển khai mô hình kịch bản trong write up theo các hướng
Có. Mình khuyến nghị 3 máy:
OpenCA Labs hiện có 27 repo, nhưng repo thật sự liên quan trực tiếp cho kịch bản của bạn là openca-base và openca-tools; các repo mới như docker-dev, testpki-generator, libpki, x509-json-schema không phải đường triển khai OpenCA classic mà writeup đang yêu cầu. GitHub cũng cho thấy openca-base không có release published và source rất cũ, còn tài liệu INSTALL cập nhật lần cuối từ 2011. (GitHub) Writeup bạn đưa đang yêu cầu build/deploy lab OpenCA + FTPS mutual TLS, nên cách ít lỗi nhất là: OpenCA dùng làm RA/GUI workflow, còn signing/CRL dùng OpenSSL CA backend chuẩn. (writeup1.txt)
bashhostnamectl set-hostname pki.lab.local cat >> /etc/hosts <<EOF 10.10.10.10 pki.lab.local 10.10.10.20 ftp.lab.local EOF dnf update -y dnf install -y epel-release git wget curl vim gcc gcc-c++ make autoconf automake libtool \ openssl openssl-devel perl perl-core perl-DBI perl-DBD-MariaDB perl-CGI \ perl-Digest-SHA perl-XML-Simple perl-XML-Parser db4 db4-devel \ httpd mod_ssl mariadb mariadb-server firewalld policycoreutils-python-utils systemctl enable --now mariadb httpd firewalld firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --reload
OpenCA yêu cầu OpenSSL, Perl + DBI, Berkeley DB, Apache, mod_ssl; openca-tools phải cài trước openca-base. (GitHub)
bashmysql -uroot <<'SQL' CREATE DATABASE openca CHARACTER SET utf8; CREATE USER 'openca'@'localhost' IDENTIFIED BY 'OpenCA_DB_P@ssw0rd!'; GRANT ALL PRIVILEGES ON openca.* TO 'openca'@'localhost'; FLUSH PRIVILEGES; SQL
bashcd /usr/local/src git clone https://github.com/openca/openca-tools.git git clone https://github.com/openca/openca-base.git cd /usr/local/src/openca-tools ./configure --prefix=/opt/openca make make install cd /usr/local/src/openca-base ./configure \ --prefix=/opt/openca \ --with-web-host=pki.lab.local \ --with-httpd-fs-prefix=/etc/httpd \ --with-htdocs-fs-prefix=/var/www/html \ --with-httpd-user=apache \ --with-httpd-group=apache \ --with-openca-user=apache \ --with-openca-group=apache make make install-offline make install-online cd /opt/openca/etc cp config.xml config.xml.bak ./configure_etc.sh ln -sf /opt/openca/etc/init.d/openca /etc/init.d/openca /etc/init.d/openca start
OpenCA dùng make install-offline cho CA và make install-online cho RA/Pub, sau đó sửa OPENCA_PREFIX/etc/config.xml, chạy configure_etc.sh, rồi start daemon. (GitHub)
Thông số thống nhất:
textRoot CA: RSA 4096, SHA256, 10 năm Intermediate CA: RSA 4096, SHA256, 5 năm FTP server cert: RSA 2048, SHA256, 397 ngày Windows client cert: RSA 2048, SHA256, 365 ngày Root passphrase: RootCAP@ssw0rd! Intermediate passphrase: IntermediateP@ssw0rd! Client P12 password: ClientP@ssw0rd!
Tạo Root:
bashmkdir -p /pki/root/{certs,crl,newcerts,private,csr} chmod 700 /pki/root/private touch /pki/root/index.txt echo 1000 > /pki/root/serial echo 1000 > /pki/root/crlnumber openssl genrsa -aes256 -out /pki/root/private/rootCA.key 4096 openssl req -x509 -new -sha256 -days 3650 \ -key /pki/root/private/rootCA.key \ -out /pki/root/certs/rootCA.crt \ -subj "/C=VN/O=LAB-PKI/CN=LAB ROOT CA"
Tạo Intermediate:
bashmkdir -p /pki/intermediate/{certs,crl,csr,newcerts,private} chmod 700 /pki/intermediate/private touch /pki/intermediate/index.txt echo 2000 > /pki/intermediate/serial echo 2000 > /pki/intermediate/crlnumber openssl genrsa -aes256 -out /pki/intermediate/private/intermediate.key 4096 openssl req -new -sha256 \ -key /pki/intermediate/private/intermediate.key \ -out /pki/intermediate/csr/intermediate.csr \ -subj "/C=VN/O=LAB-PKI/CN=LAB INTERMEDIATE CA" openssl x509 -req -sha256 -days 1825 \ -in /pki/intermediate/csr/intermediate.csr \ -CA /pki/root/certs/rootCA.crt \ -CAkey /pki/root/private/rootCA.key \ -CAcreateserial \ -out /pki/intermediate/certs/intermediate.crt cat /pki/intermediate/certs/intermediate.crt /pki/root/certs/rootCA.crt \ > /pki/intermediate/certs/ca-chain.crt
Tạo cert FTP:
bashmkdir -p /pki/csr/ftp openssl genrsa -out /pki/csr/ftp/ftp.key 2048 cat > /pki/csr/ftp/ftp.cnf <<'EOF' [ req ] prompt = no default_md = sha256 distinguished_name = dn req_extensions = req_ext [ dn ] C = VN O = LAB-PKI CN = ftp.lab.local [ req_ext ] subjectAltName = @alt_names [ alt_names ] DNS.1 = ftp.lab.local IP.1 = 10.10.10.20 EOF openssl req -new \ -key /pki/csr/ftp/ftp.key \ -out /pki/csr/ftp/ftp.csr \ -config /pki/csr/ftp/ftp.cnf openssl x509 -req -sha256 -days 397 \ -in /pki/csr/ftp/ftp.csr \ -CA /pki/intermediate/certs/intermediate.crt \ -CAkey /pki/intermediate/private/intermediate.key \ -CAcreateserial \ -out /pki/csr/ftp/ftp.crt
Tạo cert client Windows:
bashmkdir -p /pki/csr/client openssl genrsa -out /pki/csr/client/win10.key 2048 openssl req -new -sha256 \ -key /pki/csr/client/win10.key \ -out /pki/csr/client/win10.csr \ -subj "/C=VN/O=LAB-PKI/CN=win10-client" openssl x509 -req -sha256 -days 365 \ -in /pki/csr/client/win10.csr \ -CA /pki/intermediate/certs/intermediate.crt \ -CAkey /pki/intermediate/private/intermediate.key \ -CAcreateserial \ -out /pki/csr/client/win10.crt openssl pkcs12 -export \ -out /pki/csr/client/win10.p12 \ -inkey /pki/csr/client/win10.key \ -in /pki/csr/client/win10.crt \ -certfile /pki/intermediate/certs/ca-chain.crt \ -name "win10-client"
bashhostnamectl set-hostname ftp.lab.local cat >> /etc/hosts <<EOF 10.10.10.10 pki.lab.local 10.10.10.20 ftp.lab.local EOF apt update apt install -y proftpd-basic proftpd-mod-crypto openssl ufw mkdir -p /etc/proftpd/ssl /etc/proftpd/ca
Copy từ PKI sang FTP:
text/pki/csr/ftp/ftp.crt -> /etc/proftpd/ssl/ftp.crt /pki/csr/ftp/ftp.key -> /etc/proftpd/ssl/ftp.key /pki/intermediate/certs/ca-chain.crt -> /etc/proftpd/ca/ca-chain.crt
bashchmod 600 /etc/proftpd/ssl/ftp.key
Cấu hình /etc/proftpd/tls.conf:
apache<IfModule mod_tls.c> TLSEngine on TLSProtocol TLSv1.2 TLSv1.3 TLSRequired on TLSRSACertificateFile /etc/proftpd/ssl/ftp.crt TLSRSACertificateKeyFile /etc/proftpd/ssl/ftp.key TLSCACertificateFile /etc/proftpd/ca/ca-chain.crt TLSVerifyClient on TLSOptions NoSessionReuseRequired TLSLog /var/log/proftpd/tls.log </IfModule>
Thêm vào /etc/proftpd/proftpd.conf:
apacheInclude /etc/proftpd/tls.conf DefaultRoot ~ RequireValidShell off
bashuseradd -m -s /usr/sbin/nologin ftpuser01 passwd ftpuser01 systemctl restart proftpd systemctl enable proftpd ufw allow 21/tcp ufw allow 40000:40100/tcp ufw enable
Import:
textrootCA.crt -> Trusted Root Certification Authorities intermediate.crt -> Intermediate Certification Authorities win10.p12 -> Personal
FileZilla:
textProtocol: FTP Encryption: Require explicit FTP over TLS Host: ftp.lab.local Port: 21 User: ftpuser01 Client certificate: win10.p12
Test từ Linux:
bashopenssl s_client \ -connect ftp.lab.local:21 \ -starttls ftp \ -CAfile /pki/intermediate/certs/ca-chain.crt \ -cert /pki/csr/client/win10.crt \ -key /pki/csr/client/win10.key \ -verify_return_error
GUI ở đây là web UI của OpenCA, không phải GUI cài đặt hệ thống. Phần build OpenCA vẫn phải CLI vì source classic chỉ cung cấp configure/make/install.
Quy trình GUI:
texthttp://pki.lab.local/pki
hoặc nếu Apache SSL đã bật:
texthttps://pki.lab.local/pki
ftp.lab.localLAB-PKIVNwin10-clientbashopenssl pkcs12 -export \ -out /pki/csr/client/win10.p12 \ -inkey /pki/csr/client/win10.key \ -in /pki/csr/client/win10.crt \ -certfile /pki/intermediate/certs/ca-chain.crt \ -name "win10-client"
Nhược điểm của hướng GUI: OpenCA quá cũ, GUI dễ lỗi Perl/CGI/session/database. Vì vậy chỉ nên dùng GUI để chứng minh RA workflow, còn signing/debug nên giữ CLI.
Đây là phương án mình khuyên dùng:
textCLI: - build OpenCA - tạo Root CA - tạo Intermediate CA - tạo OpenSSL CA directory - cấu hình Apache/MariaDB - tạo CRL - export PKCS#12 - cấu hình ProFTPD - debug TLS GUI OpenCA: - submit request - approve request - issue certificate - revoke certificate - xem trạng thái request/cert
Lý do: OpenCA official vẫn yêu cầu openca-tools trước openca-base, install-offline/install-online, edit config.xml, chạy configure_etc.sh, và tạo database riêng. (GitHub) Nhưng với lab cũ, nếu phụ thuộc 100% GUI thì lỗi CGI/Perl/DB sẽ làm bạn rất khó hoàn thành đề tài.
Kết luận: dùng Rocky Linux 8.10 cho PKI/OpenCA, Ubuntu 20.04 cho FTP, Windows 10 cho client; triển khai CLI trước để chắc chắn chạy được, sau đó dùng GUI OpenCA để demo RA/CA workflow.