Thứ năm, 02/04/2020 | 00:00 GMT+7

Cách thiết lập và cấu hình tổ chức phát hành chứng chỉ (CA) trên Debian 10

Tổ chức phát hành certificate (CA) là tổ chức chịu trách nhiệm cấp certificate để xác minh danh tính trên internet. Mặc dù CA công cộng là lựa chọn phổ biến để xác minh danh tính của các trang web và các dịch vụ khác được cung cấp cho công chúng, nhưng CA riêng thường được sử dụng cho các group kín và dịch vụ riêng.

Xây dựng Tổ chức phát hành certificate riêng sẽ cho phép bạn cấu hình , kiểm tra và chạy các chương trình yêu cầu kết nối được mã hóa giữa client và server . Với CA riêng, bạn có thể cấp certificate cho user , server hoặc các chương trình và dịch vụ riêng lẻ trong cơ sở hạ tầng của bạn .

Một số ví dụ về các chương trình trên Linux sử dụng CA riêng của chúng là OpenVPNPuppet . Bạn cũng có thể cấu hình web server của bạn để sử dụng các certificate do CA tư nhân cấp nhằm làm cho môi trường phát triển và tổ chức trùng với server production sử dụng TLS để mã hóa kết nối.

Trong hướng dẫn này, ta sẽ tìm hiểu cách cài đặt Tổ chức phát hành certificate riêng trên server Debian 10 cũng như cách tạo và ký certificate thử nghiệm bằng CA mới của bạn. Bạn cũng sẽ tìm hiểu cách nhập public certificate của server CA vào kho certificate của hệ điều hành để bạn có thể xác minh chuỗi tin cậy giữa CA và server từ xa hoặc user . Cuối cùng, bạn sẽ học cách thu hồi certificate và phân phối Danh sách thu hồi certificate đảm bảo chỉ những user và hệ thống được ủy quyền mới có thể sử dụng các dịch vụ dựa trên CA của bạn.

Yêu cầu

Để hoàn thành hướng dẫn này, bạn cần truy cập vào server Debian 10 để lưu trữ server CA của bạn. Bạn cần phải cấu hình user không phải root với các quyền sudo trước khi bắt đầu hướng dẫn này. Bạn có thể làm theo hướng dẫn cài đặt server ban đầu Debian 10 của ta để cài đặt user có quyền thích hợp. Hướng dẫn được liên kết cũng sẽ cài đặt tường lửa , được giả định là ở trong suốt hướng dẫn này.

Server này sẽ được gọi là Server CA trong hướng dẫn này.

Đảm bảo rằng Server CA là một hệ thống độc lập. Nó sẽ chỉ được sử dụng để nhập, ký và thu hồi các certificate request . Nó sẽ không chạy bất kỳ dịch vụ nào khác và lý tưởng là nó sẽ offline hoặc tắt hoàn toàn khi bạn không tích cực làm việc với CA của bạn .

Lưu ý: Phần cuối cùng của hướng dẫn này là tùy chọn nếu bạn muốn tìm hiểu về cách ký và thu hồi certificate . Nếu bạn chọn hoàn thành các bước thực hành đó, bạn cần một server Debian 10 thứ hai hoặc bạn cũng có thể sử dụng máy tính Linux local của riêng mình chạy Debian hoặc Ubuntu, hoặc các bản phân phối bắt nguồn từ một trong hai thứ đó.

Bước 1 - Cài đặt Easy-RSA

Nhiệm vụ đầu tiên trong hướng dẫn này là cài đặt easy-rsa tập các script trên CA server của bạn. easy-rsa là công cụ quản lý Tổ chức phát hành certificate mà bạn sẽ sử dụng để tạo private key và certificate root công khai, sau đó bạn sẽ sử dụng để ký các yêu cầu từ client và server sẽ dựa vào CA của bạn.

Đăng nhập vào Server CA của bạn với quyền là user sudo không phải root mà bạn đã tạo trong các bước cài đặt ban đầu và chạy như sau:

  • sudo apt update
  • sudo apt install easy-rsa

Bạn sẽ được yêu cầu download gói và cài đặt nó. Nhấn y để xác nhận bạn muốn cài đặt gói.

Đến đây, bạn đã có mọi thứ bạn cần cài đặt và sẵn sàng sử dụng Easy-RSA. Trong bước tiếp theo, bạn sẽ tạo Cơ sở hạ tầng public key và sau đó bắt đầu xây dựng Tổ chức phát hành certificate của bạn .

Bước 2 - Chuẩn bị Thư mục Cơ sở hạ tầng Khóa Công khai

Đến đây bạn đã cài đặt easy-rsa , đã đến lúc tạo một khung Cơ sở hạ tầng public key (PKI) trên Server CA. Đảm bảo rằng bạn vẫn đăng nhập với quyền là user không phải root của bạn và tạo một folder easy-rsa . Đảm bảo rằng bạn không sử dụng sudo để chạy bất kỳ lệnh nào sau đây, vì user bình thường của bạn sẽ quản lý và tương tác với CA mà không có quyền nâng cao.

  • mkdir ~/easy-rsa

Thao tác này sẽ tạo một folder mới có tên easy-rsa trong folder chính của bạn. Ta sẽ sử dụng folder này để tạo các softlink trỏ đến các file gói easy-rsa mà ta đã cài đặt ở bước trước. Các file này nằm trong folder /usr/share/easy-rsa trên Server CA.

Tạo các softlink bằng lệnh ln :

  • ln -s /usr/share/easy-rsa/* ~/easy-rsa/

Lưu ý: Trong khi các hướng dẫn khác có thể hướng dẫn bạn sao chép các file gói easy-rsa vào folder PKI của bạn, hướng dẫn này sử dụng phương pháp softlink . Do đó, bất kỳ cập nhật nào đối với gói easy-rsa sẽ được tự động phản ánh trong các tập lệnh PKI của bạn.

Để hạn chế quyền truy cập vào folder PKI mới của bạn, hãy đảm bảo chỉ chủ sở hữu mới có thể truy cập nó bằng cách sử dụng chmod :

  • chmod 700 /home/sammy/easy-rsa

Cuối cùng, khởi tạo PKI bên trong folder easy-rsa :

  • cd ~/easy-rsa
  • ./easyrsa init-pki
Output
init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /home/sammy/easy-rsa/pki

Sau khi hoàn thành phần này, bạn có một folder chứa tất cả các file cần thiết để tạo Tổ chức phát hành certificate . Trong phần tiếp theo, bạn sẽ tạo private key và public certificate cho CA của bạn .

Bước 3 - Tạo Tổ chức phát hành certificate

Trước khi bạn có thể tạo private key và certificate CA của bạn , bạn cần tạo và điền một file có tên là vars với một số giá trị mặc định. Đầu tiên, bạn sẽ cd vào folder easy-rsa , sau đó bạn sẽ tạo và chỉnh sửa file vars bằng nano hoặc editor bạn muốn :

  • cd ~/easy-rsa
  • nano vars

Sau khi file được mở, hãy paste vào các dòng sau và chỉnh sửa từng giá trị được đánh dấu để phản ánh thông tin tổ chức của bạn . Phần quan trọng ở đây là đảm bảo bạn không để trống bất kỳ giá trị nào:

~/easy-rsa/vars
set_var EASYRSA_REQ_COUNTRY "US" set_var EASYRSA_REQ_PROVINCE "NewYork" set_var EASYRSA_REQ_CITY "New York City" set_var EASYRSA_REQ_ORG "DigitalOcean" set_var EASYRSA_REQ_EMAIL "admin@example.com" set_var EASYRSA_REQ_OU "Community" set_var EASYRSA_ALGO "ec" set_var EASYRSA_DIGEST "sha512"

Khi bạn hoàn tất, hãy lưu file . Nếu bạn đang sử dụng nano , bạn có thể thực hiện bằng cách nhấn CTRL+X , sau đó nhấn YENTER để xác nhận. Đến đây bạn đã sẵn sàng để xây dựng CA của bạn .

Để tạo cặp khóa public key và private key root cho Tổ chức phát hành certificate của bạn, hãy chạy lại lệnh ./easy-rsa , lần này với tùy chọn build-ca :

  • ./easyrsa build-ca

Trong kết quả , bạn sẽ thấy một số dòng về version OpenSSL và bạn sẽ được yêu cầu nhập passphrase (password bảo vệ) cho cặp khóa của bạn . Đảm bảo chọn một passphrase (password bảo vệ) mạnh và ghi chú nó vào một nơi an toàn. Bạn cần nhập passphrase (password bảo vệ) bất kỳ lúc nào bạn cần tương tác với CA của bạn , chẳng hạn như để ký hoặc thu hồi certificate .

Bạn cần xác nhận Tên chung (CN) cho CA của bạn. CN là tên dùng để chỉ máy này trong ngữ cảnh của Tổ chức phát hành certificate . Bạn có thể nhập bất kỳ chuỗi ký tự nào cho Tên chung của CA nhưng để đơn giản hơn, hãy nhấn ENTER để chấp nhận tên mặc định.

Output
. . . Enter New CA Key Passphrase: Re-Enter New CA Key Passphrase: . . . Common Name (eg: your user, host, or server name) [Easy-RSA CA]: CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /home/sammy/easy-rsa/pki/ca.crt

Lưu ý: Nếu bạn không muốn được yêu cầu nhập password mỗi khi tương tác với CA của bạn , bạn có thể chạy lệnh build-ca với tùy chọn nopass , như sau:

  • ./easyrsa build-ca nopass

Đến đây bạn có hai file quan trọng - ~/easy-rsa/pki/ca.crt~/easy-rsa/pki/private/ca.key - tạo nên các thành phần công khai và riêng tư của Tổ chức phát hành certificate .

  • ca.crt là file public certificate của CA. User , server và ứng dụng client sẽ sử dụng certificate này để xác minh họ là một phần của cùng một trang web tin cậy. Mọi user và server sử dụng CA của bạn cần có một bản sao của file này. Tất cả các bên sẽ dựa vào public certificate đảm bảo rằng ai đó không mạo danh hệ thống và thực hiện một cuộc tấn công Man-in-the-middle .

  • ca.key là private key mà CA sử dụng để ký certificate cho server và client . Nếu kẻ tấn công giành được quyền truy cập vào CA của bạn và đến lượt nó, file ca.key của bạn, bạn cần phải hủy CA của bạn . Đây là lý do tại sao file ca.key của bạn chỉ nên nằm trên máy CA của bạn và lý tưởng là máy CA của bạn nên được giữ offline khi không ký certificate request như một biện pháp bảo mật bổ sung.

Như vậy, CA của bạn đã sẵn sàng và nó sẵn sàng được sử dụng để ký các certificate request và thu hồi certificate .

Bước 4 - Phân phối Chứng chỉ công cộng của Tổ chức phát hành certificate của bạn

Bây giờ CA của bạn đã được cấu hình và sẵn sàng hoạt động như một root tin cậy cho bất kỳ hệ thống nào bạn muốn cấu hình để sử dụng nó. Bạn có thể thêm certificate của CA vào server OpenVPN, web server , server thư, v.v. Bất kỳ user hoặc server nào cần xác minh danh tính của user hoặc server khác trong mạng của bạn phải có một bản sao của file ca.crt được nhập vào kho certificate của hệ điều hành của họ.

Để nhập public certificate của CA vào một hệ thống Linux thứ hai như một server khác hoặc một máy tính local , trước tiên hãy lấy bản sao của file ca.crt từ server CA của bạn. Bạn có thể sử dụng lệnh cat để xuất nó trong một terminal , sau đó copy paste nó vào một file trên máy tính thứ hai đang nhập certificate . Bạn cũng có thể sử dụng các công cụ như scp , rsync để chuyển file giữa các hệ thống. Tuy nhiên, ta sẽ sử dụng copy paste với nano trong bước này vì nó sẽ hoạt động trên tất cả các hệ thống.

Với quyền là user không phải root của bạn trên Server CA, hãy chạy lệnh sau:

  • cat ~/easy-rsa/pki/ca.crt

Sẽ có kết quả trong terminal của bạn tương tự như sau:

Output
-----BEGIN CERTIFICATE----- MIIDSzCCAjOgAwIBAgIUcR9Crsv3FBEujrPZnZnU4nSb5TMwDQYJKoZIhvcNAQEL BQAwFjEUMBIGA1UEAwwLRWFzeS1SU0EgQ0EwHhcNMjAwMzE4MDMxNjI2WhcNMzAw . . . . . . -----END CERTIFICATE-----

Sao chép mọi thứ, bao gồm các dòng -----BEGIN CERTIFICATE----------END CERTIFICATE----- và các dấu gạch ngang.

Trên hệ thống Linux thứ hai của bạn, hãy sử dụng nano hoặc editor bạn muốn để mở một file có tên /tmp/ca.crt :

  • nano /tmp/ca.crt

Dán nội dung bạn vừa sao chép từ Server CA vào editor . Khi bạn hoàn tất, hãy lưu file . Nếu bạn đang sử dụng nano , bạn có thể thực hiện bằng cách nhấn CTRL+X , sau đó nhấn YENTER để xác nhận.

Đến đây bạn đã có một bản sao của file ca.crt trên hệ thống Linux thứ hai của bạn , đã đến lúc nhập certificate vào kho certificate hệ điều hành của nó.

Trên hệ thống dựa trên Debian và Ubuntu, hãy chạy các lệnh sau để nhập certificate :

Các bản phân phối bắt nguồn từ Debian và Ubuntu
  • cp /tmp/ca.crt /usr/local/share/ca-certificates/
  • update-ca-certificates

Để nhập certificate của Server CA trên hệ thống dựa trên CentOS, Fedora hoặc RedHat, hãy copy paste nội dung file vào hệ thống giống như trong ví dụ trước trong file có tên /tmp/ca.crt . Tiếp theo, bạn sẽ sao chép certificate vào /etc/pki/ca-trust/source/anchors/ , sau đó chạy lệnh update-ca-trust .

Các bản phân phối CentOS, Fedora, RedHat
  • sudo cp /tmp/ca.crt /etc/pki/ca-trust/source/anchors/
  • update-ca-trust

Bây giờ hệ thống Linux thứ hai của bạn sẽ tin cậy bất kỳ certificate nào đã được server CA ký.

Lưu ý: Nếu bạn đang sử dụng CA của bạn với các web server và sử dụng Firefox làm trình duyệt, bạn cần nhập trực tiếp certificate ca.crt công khai vào Firefox. Firefox không sử dụng repository certificate của hệ điều hành local . Để biết chi tiết về cách thêm certificate CA của bạn vào Firefox, vui lòng xem bài viết hỗ trợ này của Mozilla về Cài đặt Tổ chức phát hành certificate (CA) trong Firefox .

Nếu bạn đang sử dụng CA của bạn để tích hợp với môi trường Windows hoặc máy tính để bàn, vui lòng xem tài liệu về cách sử dụng certutil.exe để cài đặt certificate CA.

Nếu bạn đang sử dụng hướng dẫn này làm yêu cầu cho một hướng dẫn khác hoặc đã quen với cách ký và thu hồi certificate , bạn có thể dừng lại ở đây. Nếu bạn muốn tìm hiểu thêm về cách ký và thu hồi certificate , thì phần tùy chọn sau đây sẽ giải thích chi tiết từng quy trình.

(Tùy chọn) - Tạo yêu cầu ký certificate và thu hồi certificate

Các phần sau của hướng dẫn là tùy chọn. Nếu bạn đã hoàn thành tất cả các bước trước đó thì bạn có Cơ quan cấp certificate được cấu hình đầy đủ và đang hoạt động mà bạn có thể sử dụng làm yêu cầu cho các hướng dẫn khác. Bạn có thể nhập file ca.crt của CA và xác minh các certificate trong mạng đã được CA của bạn ký.

Nếu bạn muốn thực hành và tìm hiểu thêm về cách ký certificate request và cách thu hồi certificate , thì các phần tùy chọn này sẽ giải thích cách hoạt động của cả hai quy trình.

(Tùy chọn) - Tạo và Ký Yêu cầu Chứng chỉ Hành nghề

Đến đây bạn đã có một CA sẵn sàng để sử dụng, bạn có thể thực hành tạo private key và certificate request để làm quen với quy trình ký và phân phối.

Yêu cầu ký certificate (CSR) bao gồm ba phần: public key , thông tin nhận dạng về hệ thống yêu cầu và chữ ký của chính yêu cầu, được tạo bằng private key của bên yêu cầu. Khóa riêng tư sẽ được giữ bí mật và sẽ được sử dụng để mã hóa thông tin mà bất kỳ ai có public certificate đã ký sau đó đều có thể giải mã.

Các bước sau sẽ được chạy trên hệ thống Linux thứ hai của bạn Debian, Ubuntu hoặc bản phân phối có nguồn root từ một trong hai. Nó có thể là một server từ xa khác hoặc một máy Linux local như notebook hoặc máy tính để bàn. Vì easy-rsa không có sẵn theo mặc định trên tất cả các hệ thống, ta sẽ sử dụng công cụ openssl để tạo certificate và private key thực hành.

openssl thường được cài đặt theo mặc định trên hầu hết các bản phân phối Linux, nhưng để chắc chắn, hãy chạy phần sau trên hệ thống của bạn:

  • sudo apt update
  • sudo apt install openssl

Khi bạn được yêu cầu cài đặt openssl nhập y để tiếp tục các bước cài đặt. Đến đây bạn đã sẵn sàng tạo CSR thực hành với openssl .

Bước đầu tiên bạn cần hoàn thành để tạo CSR là tạo private key . Để tạo private key bằng openssl , hãy tạo folder practice-csr và sau đó tạo khóa bên trong nó. Ta sẽ thực hiện yêu cầu này cho một server giả có tên là sammy-server , trái ngược với việc tạo certificate được sử dụng để xác định user hoặc một CA khác.

  • mkdir ~/practice-csr
  • cd ~/practice-csr
  • openssl genrsa -out sammy-server.key
Output
Generating RSA private key, 2048 bit long modulus (2 primes) . . . . . . e is 65537 (0x010001)

Đến đây bạn đã có private key , bạn có thể tạo CSR tương ứng bằng cách sử dụng lại tiện ích openssl . Bạn sẽ được yêu cầu điền vào một số trường như Quốc gia, Tiểu bang và Thành phố. Bạn có thể nhập a . nếu bạn muốn để trống một trường, nhưng lưu ý nếu đây là CSR thực, tốt nhất bạn nên sử dụng các giá trị chính xác cho vị trí và tổ chức của bạn :

  • openssl req -new -key sammy-server.key -out sammy-server.req
Output
. . . ----- Country Name (2 letter code) [XX]:US State or Province Name (full name) []:New York Locality Name (eg, city) [Default City]:New York City Organization Name (eg, company) [Default Company Ltd]:DigitalOcean Organizational Unit Name (eg, section) []:Community Common Name (eg, your name or your server's hostname) []:sammy-server Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:

Nếu bạn muốn tự động thêm các giá trị đó như một phần của lệnh gọi openssl thay vì thông qua dấu nhắc tương tác, bạn có thể chuyển đối số -subj vào OpenSSL. Đảm bảo chỉnh sửa các giá trị được đánh dấu để phù hợp với vị trí thực hành, tổ chức và tên server của bạn:

  • openssl req -new -key sammy-server.key -out server.req -subj \
  • /C=US/ST=New\ York/L=New\ York\ City/O=DigitalOcean/OU=Community/CN=sammy-server

Để xác minh nội dung của CSR, bạn có thể đọc trong file yêu cầu với openssl và kiểm tra các trường bên trong:

  • openssl req -in sammy-server.req -noout -subject
Output
subject=C = US, ST = New York, L = New York City, O = DigitalOcean, OU = Community, CN = sammy-server

Khi thấy ổn với chủ đề certificate request hành nghề của bạn , hãy sao chép file sammy-server.req vào server CA của bạn bằng cách sử dụng scp :

  • scp sammy-server.req sammy@your_ca_server_ip:/tmp/sammy-server.req

Trong bước này, bạn đã tạo Yêu cầu ký certificate cho một server giả có tên là sammy-server . Trong tình huống thực tế, yêu cầu có thể là từ một thứ gì đó như web server phát triển hoặc dàn dựng cần certificate TLS để thử nghiệm; hoặc nó có thể đến từ server OpenVPN đang certificate request để user có thể kết nối với VPN. Trong bước tiếp theo, ta sẽ tiến hành ký yêu cầu ký certificate bằng private key của Server CA.

(Tùy chọn) - Ký CSR

Trong bước trước, bạn đã tạo certificate request hành nghề và khóa cho một server giả . Bạn đã sao chép nó vào /tmp trên server CA của bạn , mô phỏng quy trình mà bạn sẽ sử dụng nếu bạn có các client hoặc server thực gửi cho bạn các yêu cầu CSR cần được ký.

Tiếp tục với kịch bản giả tưởng, bây giờ Server CA cần nhập certificate hành nghề và ký nó. Sau khi CA xác thực certificate request và chuyển tiếp trở lại server , các ứng dụng client tin tưởng Tổ chức phát hành certificate cũng sẽ có thể tin tưởng certificate mới được cấp.

Vì ta sẽ hoạt động bên trong PKI của CA nơi easy-rsa tiện ích easy-rsa , các bước ký sẽ sử dụng trình easy-rsa để làm mọi thứ dễ dàng hơn, trái ngược với việc sử dụng openssl trực tiếp như ta đã làm trong ví dụ trước.

Bước đầu tiên để ký CSR hư cấu là nhập certificate request bằng tập lệnh easy-rsa :

  • cd ~/easy-rsa
  • ./easyrsa import-req /tmp/sammy-server.req sammy-server
Output
. . . The request has been successfully imported with a short name of: sammy-server You may now use this name to perform signing operations on this request.

Đến đây bạn có thể ký yêu cầu bằng cách chạy tập lệnh easyrsa với tùy chọn yêu cầu sign-req , tiếp theo là loại yêu cầu và Tên chung có trong CSR. Loại yêu cầu có thể là một trong các client , server hoặc ca Vì ta đang thực hành với certificate cho một server giả , hãy đảm bảo sử dụng loại yêu cầu server :

  • ./easyrsa sign-req server sammy-server

Trong kết quả , bạn cần xác minh yêu cầu đến từ một nguồn tin cậy . Nhập yes sau đó nhấn ENTER để xác nhận điều này:

Output
You are about to sign the following certificate. Please check over the details shown below for accuracy. Note that this request has not been cryptographically verified. Please be sure it came from a trusted source or that you have verified the request checksum with the sender. Request subject, to be signed as a server certificate for 3650 days: subject= commonName = sammy-server Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes . . . Certificate created at: /home/sammy/easy-rsa/pki/issued/sammy-server.crt

Nếu bạn đã mã hóa khóa CA của bạn , bạn sẽ được yêu cầu nhập password của bạn tại thời điểm này.

Với những bước đó hoàn tất, bạn đã ký CSR sammy-server.req bằng private key của Server CA trong /home/sammy/easy-rsa/pki/private/ca.key . Tệp sammy-server.crt kết quả chứa khóa mã hóa công khai của server thực hành, cũng như chữ ký mới từ Server CA. Điểm của chữ ký là nói với bất kỳ ai tin tưởng CA rằng họ cũng có thể tin tưởng certificate sammy-server .

Nếu yêu cầu này dành cho một server thực như web server hoặc server VPN, thì bước cuối cùng trên Server CA sẽ là phân phối các file sammy-server.crtca.crt từ Server CA đến server từ xa đã tạo Yêu cầu CSR:

  • scp pki/issued/sammy-server.crt sammy@your_server_ip:/tmp
  • scp pki/ca.crt sammy@your_server_ip:/tmp

Đến đây, bạn có thể sử dụng certificate đã cấp với thông tin như web server , VPN, công cụ quản lý cấu hình, hệ thống database hoặc cho mục đích xác thực client .

(Tùy chọn) - Thu hồi Giấy chứng nhận

Đôi khi, bạn có thể cần phải thu hồi certificate để ngăn user hoặc server sử dụng certificate đó. Có thể notebook của ai đó đã bị đánh cắp, web server bị xâm nhập hoặc nhân viên hoặc nhà thầu đã rời khỏi tổ chức của bạn.

Để thu hồi certificate , quy trình chung thực hiện theo các bước sau:

  1. Thu hồi certificate bằng lệnh ./easyrsa revoke client_name .
  2. Tạo CRL mới bằng lệnh ./easyrsa gen-crl .
  3. Chuyển file crl.pem cập nhật đến server hoặc các server dựa vào CA của bạn và trên các hệ thống đó sao chép file đó vào folder hoặc các folder được yêu cầu cho các chương trình tham chiếu đến nó.
  4. Khởi động lại bất kỳ dịch vụ nào sử dụng CA của bạn và file CRL.

Bạn có thể sử dụng quy trình này để thu hồi bất kỳ certificate nào mà bạn đã cấp trước đó bất kỳ lúc nào. Ta sẽ xem xét chi tiết từng bước trong các phần sau, bắt đầu với lệnh revoke .

Thu hồi certificate

Để thu hồi certificate , hãy chuyển đến folder easy-rsa trên server CA của bạn:

  • cd ~/easy-rsa

Tiếp theo, chạy tập lệnh easyrsa với tùy chọn revoke , theo sau là tên khách hàng mà bạn muốn thu hồi. Theo ví dụ thực hành ở trên, Tên chung của certificate là sammy-server :

  • ./easyrsa revoke sammy-server

Thao tác này sẽ yêu cầu bạn xác nhận việc thu hồi bằng lệnh yes :

Output
Please confirm you wish to revoke the certificate with the following subject: subject= commonName = sammy-server Type the word 'yes' to continue, or any other input to abort. Continue with revocation: yes . . . Revoking Certificate 8348B3F146A765581946040D5C4D590A . . .

Lưu ý giá trị được đánh dấu trên dòng Revoking Certificate . Giá trị này là số sê-ri duy nhất của certificate đang bị thu hồi. Nếu bạn muốn kiểm tra danh sách thu hồi trong bước cuối cùng của phần này để xác minh certificate có trong đó, bạn cần giá trị này.

Sau khi xác nhận hành động, CA sẽ thu hồi certificate . Tuy nhiên, các hệ thống từ xa dựa vào CA không có cách nào để kiểm tra xem có bất kỳ certificate nào đã bị thu hồi hay không. User và server sẽ vẫn có thể sử dụng certificate cho đến khi Danh sách Thu hồi Chứng chỉ (CRL) của CA được phân phối cho tất cả các hệ thống dựa trên CA.

Trong bước tiếp theo, bạn sẽ tạo CRL hoặc cập nhật file crl.pem hiện có.

Tạo danh sách thu hồi certificate

Đến đây bạn đã thu hồi certificate , điều quan trọng là phải cập nhật danh sách certificate đã thu hồi trên server CA của bạn. Khi bạn có danh sách thu hồi cập nhật, bạn có thể biết user và hệ thống nào có certificate hợp lệ trong CA của bạn.

Để tạo CRL, hãy chạy lệnh easy-rsa với tùy chọn gen-crl khi vẫn ở trong folder ~/easy-rsa :

  • ./easyrsa gen-crl

Nếu bạn đã sử dụng passphrase (password bảo vệ) khi tạo file ca.key , bạn sẽ được yêu cầu nhập passphrase (password bảo vệ) đó. Lệnh gen-crl sẽ tạo một file có tên là crl.pem , chứa danh sách cập nhật các certificate đã thu hồi cho CA đó.

Tiếp theo, bạn cần chuyển file crl.pem cập nhật tới tất cả các server và ứng dụng client dựa vào CA này mỗi khi bạn chạy lệnh gen-crl . Nếu không, các client và hệ thống vẫn có thể truy cập các dịch vụ và hệ thống sử dụng CA của bạn, vì các dịch vụ đó cần biết về trạng thái đã thu hồi của certificate .

Chuyển danh sách thu hồi certificate

Đến đây bạn đã tạo CRL trên server CA của bạn , bạn cần chuyển nó đến các hệ thống từ xa dựa vào CA của bạn. Để chuyển file này đến server của bạn, bạn có thể sử dụng lệnh scp .

Lưu ý: Hướng dẫn này giải thích cách tạo và phân phối CRL theo cách thủ công. Mặc dù có nhiều phương pháp mạnh mẽ và tự động hơn để phân phối và kiểm tra danh sách thu hồi như OCSP-Stapling , việc cấu hình các phương pháp đó nằm ngoài phạm vi của bài viết này.

Đảm bảo bạn đã đăng nhập vào server CA của bạn với quyền là user không phải root của bạn và chạy phần sau, thay thế bằng tên server hoặc IP server của bạn thay cho your_server_ip :

  • scp ~/easy-rsa/pki/crl.pem sammy@your_server_ip:/tmp

Bây giờ file đã nằm trên hệ thống từ xa, bước cuối cùng là cập nhật bất kỳ dịch vụ nào với bản sao mới của danh sách thu hồi.

Cập nhật các dịch vụ hỗ trợ CRL

Liệt kê các bước bạn cần sử dụng để cập nhật các dịch vụ sử dụng file crl.pem nằm ngoài phạm vi của hướng dẫn này. Nói chung, bạn cần sao chép file crl.pem vào vị trí mà dịch vụ mong đợi và sau đó khởi động lại bằng systemctl .

Khi bạn đã cập nhật các dịch vụ của bạn bằng file crl.pem mới, các dịch vụ của bạn có thể từ chối các kết nối từ client hoặc server đang sử dụng certificate đã bị thu hồi.

Kiểm tra và xác minh nội dung của CRL

Nếu bạn muốn kiểm tra file CRL, chẳng hạn để xác nhận danh sách các certificate đã bị thu hồi, hãy sử dụng lệnh openssl sau từ bên trong folder easy-rsa trên server CA của bạn:

  • cd ~/easy-rsa
  • openssl crl -in pki/crl.pem -noout -text

Bạn cũng có thể chạy lệnh này trên bất kỳ server hoặc hệ thống nào có cài đặt công cụ openssl cùng với bản sao của file crl.pem . Ví dụ: nếu bạn đã chuyển file crl.pem sang hệ thống thứ hai của bạn và muốn xác minh certificate sammy-server bị thu hồi, bạn có thể sử dụng lệnh openssl như sau, thay thế số sê-ri mà bạn đã ghi trước đó khi thu hồi thay cho certificate được đánh dấu ở đây:

  • openssl crl -in /tmp/crl.pem -noout -text |grep -A 1 8348B3F146A765581946040D5C4D590A
Output
Serial Number: 8348B3F146A765581946040D5C4D590A Revocation Date: Apr 1 20:48:02 2020 GMT

Lưu ý cách grep được sử dụng để kiểm tra số sê-ri duy nhất mà bạn đã lưu ý trong bước thu hồi. Như vậy, bạn có thể xác minh nội dung của Danh sách thu hồi certificate của bạn trên bất kỳ hệ thống nào dựa vào đó để hạn chế quyền truy cập vào user và dịch vụ.

Kết luận

Trong hướng dẫn này, bạn đã tạo Tổ chức phát hành certificate riêng bằng gói Easy-RSA trên server Debian 10 độc lập. Bạn đã học được cách hoạt động của mô hình ủy thác giữa các bên dựa vào CA. Bạn cũng đã tạo và ký Yêu cầu ký certificate (CSR) cho một server thực hành và sau đó học cách thu hồi certificate . Cuối cùng, bạn đã học cách tạo và phân phối Danh sách thu hồi certificate (CRL) cho bất kỳ hệ thống nào dựa vào CA của bạn đảm bảo rằng user hoặc server không nên truy cập dịch vụ sẽ bị ngăn chặn làm như vậy.

Như vậy, bạn có thể cấp certificate cho user và sử dụng chúng với các dịch vụ như OpenVPN. Bạn cũng có thể sử dụng CA của bạn để cấu hình các web server phát triển và dàn dựng với các certificate nhằm bảo vệ môi trường phi production của bạn. Sử dụng CA có certificate TLS trong quá trình phát triển có thể giúp đảm bảo mã và môi trường của bạn trùng với môi trường production nhất có thể.

Nếu bạn muốn tìm hiểu thêm về cách sử dụng OpenSSL, hướng dẫn Cơ bản về OpenSSL: Làm việc với Chứng chỉ SSL, Khóa riêng tư và CSRs của ta có nhiều thông tin bổ sung để giúp bạn làm quen với các nguyên tắc cơ bản của OpenSSL.


Tags:

Các tin liên quan