Hướng dẫn tạo CSR và cài đặt SSL trên sever GlassFish

Bài viết sẽ hướng dẫn người dùng cách tạo CSR và cài đặt chứng chỉ SSL trên sever GlassFish.

GlassFish sử dụng các keystores ( các tệp .jks ) để lưu trữ chứng chỉ và khóa riêng. Đối với Glassfish, bạn nên tạo CSR bằng tiện ích dòng lệnh keytool .

Đầu tiên, một kho khóa mới cần được tạo. Lệnh sau có thể được sử dụng để tạo kho khóa mới với khóa riêng:

keytool -genkey -alias myalias -keyalg RSA -keysize 2048 -keystore mykeystore.jks

Chúng tôi khuyên bạn nên thay thế myalias và mykeystore bằng bí danh và tên tệp mà bạn chọn.

Bạn sẽ được nhắc đặt mật khẩu cho kho khóa này (yêu cầu ít nhất 6 ký tự). Mật khẩu kho khóa và mật khẩu khóa riêng phải giống với mật khẩu chính của Glassfish cho miền. Mật khẩu chủ mặc định là “thay đổi” và có thể được thay đổi bằng cách chạy tiểu mục thay đổi-master-mật khẩu của tiện ích asadmin .

Sau khi keytool đó sẽ yêu cầu bạn điền vào một số chi tiết liên lạc. Dưới đây là các trường cần được điền:

  • What is your first and last name? (Common Name) – đây là nơi mà miền cần được chỉ định. Đối với chứng chỉ một miền hoặc nhiều tên miền, bạn có thể nhập example.com (hoặc sub.example.com cho tên miền phụ). Đối với chứng chỉ ký tự đại diện, nó phải được chỉ định theo định dạng sau: * .example.com (hoặc * .sub.example.com).
  • What is the name of your organizational unit? – – bộ phận công ty yêu cầu chứng nhận; trường này có thể bị bỏ qua.
  • What is the name of your organization? (Tổ chức) – tên công ty đến đây; nếu không có công ty, bạn có thể nhập “NA”.
  • What is the name of your City or Locality? (Địa phương)
  • What is the name of your State or Province? (Tiểu bang)
  • What is the two-letter country code for this unit? (Quốc gia) – quốc gia cần phải được nhập dưới dạng mã quốc gia tuân thủ theo ISO gồm 2 chữ cái ; bạn luôn có thể kiểm tra mã quốc gia chính xác tại đây: https://countrycode.org/ .

Tất cả các chi tiết đã nhập sẽ được hiển thị để xem xét; nếu mọi thứ đều đúng – hãy nhập “yes” hoặc chỉ “y”.

Bạn cũng sẽ được yêu cầu đặt mật khẩu khóa sẽ được sử dụng để bảo mật khóa cá nhân. Bạn có thể nhấn Enter để làm cho mật khẩu này giống như mật khẩu kho khóa.

Dưới đây là ví dụ về điền vào các trường sau:

Bây giờ có một tệp kho khóa chứa khóa riêng trong thư mục nơi lệnh được chạy và CSR có thể được tạo bằng lệnh keytool tiếp theo:

keytool -certreq -alias myalias -file domain.csr -keystore mykeystore .jks

Trong lệnh này, myalias và mykeystore .jks giống như trong lệnh đầu tiên, và domain.csr nên được thay thế bằng một tên tệp tùy chỉnh. Sau khi chạy lệnh, bạn sẽ có một tệp domain.csr trong cùng thư mục với kho khóa.

Bạn có thể mở tệp CSR bằng bất kỳ trình soạn thảo văn bản nào (ví dụ: nano ) hoặc xuất tệp đó vào bảng điều khiển bằng lệnh cat:

Trước khi gửi CSR, chúng tôi khuyên bạn nên kiểm tra sự cố có thể bằng cách giải mã nó trên decoder.link: https://decoder.link/

Bây giờ bạn có CSR, bạn có thể tiến hành kích hoạt chứng chỉ SSL cuả mình.

Ngoài ra, bạn có thể truy cập tài liệu chính thức của Oracle để biết thêm hướng dẫn chi tiết về cách sử dụng keytool.

Sau khi chứng chỉ của bạn được kích hoạt và phát hành, bạn có thể tiến hành cài đặt chứng chỉ trên GlassFish.

Vì GlassFish sử dụng các keystores ( các tệp .jks ), các tệp chứng chỉ cần phải được nhập vào kho khóa bằng khóa riêng tương ứng trước khi cài đặt. Đối với điều này, bạn sẽ cần phải xác định vị trí kho khóa đã được sử dụng để tạo CSR. Keystore này là kho khóa duy nhất chứa khóa riêng cho chứng chỉ của bạn. Nếu bạn không thể truy xuất kho khóa, chứng chỉ sẽ cần được cấp lại với kho khóa mới.

Các tệp chứng chỉ có thể được tải xuống từ tài khoản SSL của bạn hoặc được truy xuất từ ​​email do bên cung cấp chứng chỉ gửi. Lưu trữ .zip được tải xuống từ tài khoản của bạn sẽ chứa chứng chỉ và gói CA của bạn ở định dạng PEM (tệp .crt và .ca-bundle) và ở định dạng PKCS # 7 (.p7b). Chúng tôi khuyên bạn nên nhập tệp chứng chỉ ở định dạng PKCS # 7 (.p7b / .cer) vì quá trình này đơn giản hơn; tuy nhiên, chúng cũng có thể được nhập vào PEM.

Nhập chứng chỉ

Các tệp chứng chỉ sẽ được tải lên máy chủ của bạn để chúng có thể được nhập vào kho khóa. Chỉ cần nhập chứng chỉ ở một trong các định dạng sau là đủ.

– PKCS # 7 (.p7b, .cer)

Việc nhập chứng chỉ trong PKCS # 7 được thực hiện bằng một lệnh duy nhất:

keytool -import -trustcacerts -alias myalias -file file.p7b -keystore mykeystore .jks

Bạn sẽ được nhắc nhập mật khẩu kho khóa đã được thiết lập khi tạo kho khóa. Các myalias giá trị phải là bí danh tương tự mà ban đầu được đặt ra cho các keystore. Bạn có thể xem lại bí danh bằng lệnh này: keytool -list -v -keystore mykeystore.jks

Dưới đây là ảnh chụp màn hình của một ví dụ nhập:

– PEM (.crt, .ca-bundle)

Việc nhập các tệp chứng chỉ trong PEM yêu cầu trước tiên phải nhập chứng chỉ CA (tệp .ca-bundle) và sau đó nhập chứng chỉ. Nếu bạn không có tệp .ca-bundle, bạn có thể tải xuống từ tài khoản đăng ký ssl của mình.

Gói CA có thể được nhập bằng lệnh này:

keytool -import -trustcacerts -alias ca -file file.ca-bó -keystore mykeystore .jks

Bí danh được sử dụng để nhập gói CA có thể là bất kỳ tên nào, nhưng nó phải khác với bí danh của kho khóa.

Khi gói CA được nhập, bạn có thể nhập chứng chỉ bằng lệnh sau:

keytool -import -trustcacerts -alias myalias -file file.crt -keystore mykeystore .jks

Ở đây, bí danh phải giống với bí danh của kho khóa. Ảnh chụp màn hình dưới đây minh họa quá trình nhập tệp chứng chỉ trong PEM:

Cài đặt

Khi kho khóa đã sẵn sàng, nó sẽ được nhập vào kho khóa GlassFist mặc định, có thể tìm thấy ở vị trí sau: glassfish4 / glassfish / domains / domain1 /config/keystore.jks

domain1 là tên miền mặc định được tạo bởi GlassFish. Nếu bạn đã thêm tên miền mới vào GlassFish, tên thư mục tương ứng sẽ được sử dụng thay thế.

Lệnh sau được sử dụng để nhập một kho khóa vào một kho khóa khác:

keytool -importkeystore -srckeystore mykeystore .jks -destkeystore keystore.jks

Bạn sẽ được nhắc nhở để nhập vào các mật khẩu cho cả keystores, bắt đầu từ điểm đến keystore keystore.jks . Mật khẩu cho các kho khóa GlassFish giống với mật khẩu chính của GlassFish cho tên miền; theo mặc định, nó được changeit . Tùy thuộc vào định dạng chứng chỉ bạn đã sử dụng để nhập, sẽ có một số mục nhập khác nhau. Nếu bạn đã sử dụng các mật khẩu khác nhau cho kho khóa và khóa cá nhân, mật khẩu khóa cá nhân cũng sẽ được nhập.

Lưu ý: Để chứng chỉ hoạt động trên GlassFish, mật khẩu chính của GlassFish cho miền, mật khẩu kho khóa và mật khẩu khóa riêng phải giống nhau Nếu một trong các mật khẩu không khớp với các mật khẩu khác, vui lòng xem phần Khắc phục sự cố ở cuối để thay đổi mật khẩu.

Bạn sẽ nhận được xác nhận cho biết quá trình nhập đã thành công, như được hiển thị bên dưới:

Khi kho khóa của bạn được nhập, cấu hình GlassFish cần được cập nhật để bắt đầu sử dụng chứng chỉ mới. Điều này có thể được thực hiện bằng cách sử dụng bảng điều khiển quản trị GlassFish hoặc bằng cách cập nhật cấu hình theo cách thủ công trong tệp domain.xml.

Giao diện web (Bảng điều khiển quản trị GlassFish)

Để truy cập Bảng điều khiển quản trị GlassFish từ xa, tính năng quản trị an toàn cần được bật cho miền trước tiên. Điều này có thể được thực hiện bằng cách sử dụng lệnh sau: asadmin enable-secure-admin example.com

Sau khi được bật, bạn có thể truy cập bảng điều khiển quản trị qua https://example.com:4848 . Bạn sẽ cần phải bỏ qua cảnh báo chứng chỉ được đưa ra bởi chứng chỉ tự ký được cài đặt trên GlassFish theo mặc định.

Để bật chứng chỉ qua Bảng điều khiển quản trị GlassFish, hãy nhập menu này: Configurations > server-config > HTTP Service > HTTP Listeners > http-listener-2:

Chuyển sang tab “SSL”, nhập myalias bí danh chứng chỉ của bạn làm Chứng chỉ NickName và nhấp vào “Lưu”:

Cổng GlassFish mặc định cho HTTPS là 8181; bạn có thể muốn thay đổi nó thành 443 thông thường trong tab “Chung”:

Chứng chỉ có thể được cài đặt cho Bảng điều khiển quản trị GlassFish theo cách tương tự bằng cách truy cập HTTP Listeners > admin-listener.

Có thể không phải tất cả các tham chiếu cấu hình sẽ được cập nhật thành bí danh mới. Trong trường hợp này, cần phải cập nhật chúng theo cách thủ công trong domain.xml.

 

Chỉnh sửa domain.xml

Thay vì sử dụng giao diện web (Bảng điều khiển quản trị GlassFish), bạn có thể chỉnh sửa thủ công tệp cấu hình domain.xml bằng bí danh và cổng chứng chỉ thích hợp. Tệp được đặt trong glassfish4 / glassfish / domains / domain1 /config/domain.xml .

Trước khi mở tệp, chúng tôi khuyên bạn nên dừng dịch vụ GlassFish cho tên miền này bằng lệnh sau: asadmin stop-domain example.com

Mở tệp bằng trình soạn thảo văn bản ưa thích của bạn và định vị bất kỳ tham chiếu nào đến s1as , đó là bí danh chứng chỉ mặc định được GlassFish sử dụng. s1as nên được thay thế bằng myalias bí danh chứng chỉ của chúng tôi.

Nếu tệp chứa tham chiếu đến cổng 8181, bạn cũng có thể cập nhật chúng thành 443:

Nếu tất cả bí danh được cập nhật thành bí danh của bạn, chứng chỉ cũng sẽ được cài đặt cho Bảng điều khiển quản trị GlassFish.

Lưu các thay đổi trong domain.xml và bắt đầu miền: asadmin start-domain example.com:

Điều này hoàn thành việc cài đặt, và bây giờ miền có thể được truy cập thông qua HTTPS.

Bạn có thể sử dụng công cụ này để kiểm tra cài đặt chứng chỉ: https://decoder.link/sslchecker

 

Cấu hình tùy chọn

 

Sử dụng kho khóa của riêng bạn

Thay vì nhập kho khóa của bạn vào kho khóa keystore.jks mặc định của GlassFish, bạn có thể chỉnh sửa domain.xml để tham chiếu kho khóa của riêng bạn thay thế. Tương tự như các chỉnh sửa ở trên, tất cả các tài liệu tham khảo để keystore.jks cần phải được thay thế bằng bạn mykeystore .jks filename keystore. Trong trường hợp này, kho khóa cá nhân của bạn nên được đặt vào cùng thư mục với kho khóa mặc định:

 

Chuyển hướng đến HTTPS

Để chuyển hướng tất cả lưu lượng HTTP sang HTTPS, hãy mở tệp web.xml mặc định (hoặc tệp web.xml của bạn nếu bạn có) nằm trong thư mục cấu hình miền glassfish4 / glassfish / domains / domain1 / config và thêm thông tin sau trong <web-app >… </ Web-app>:

 <security-constraint>

   <web-tài nguyên-bộ sưu tập>

     <web-resource-name> URL bảo mật của quan điểm </ web-resource-name>

     <url-pattern> / * </ url-pattern>

   </ web-tài nguyên-bộ sưu tập>

   <user-data-constraint>

     <transport-guarantee> BẢO MẬT </ transport-guarantee>

   </ user-data-constraint>

 </ security-constraint>

Một ví dụ về những gì nó có thể trông giống như:

Lưu các thay đổi và khởi động lại miền – thao tác này sẽ hoàn tất quá trình thiết lập.

 

Xử lý sự cố

 

Phần này bao gồm một số lỗi phổ biến hơn hoặc ít gặp hơn trong quá trình cài đặt, kiểm tra lỗi và hướng dẫn về thay đổi mật khẩu.

Lỗi

lỗi keytool: java.io.IOException: Keystore bị giả mạo hoặc mật khẩu không chính xác

Lỗi keytool này sẽ được hiển thị trong bất kỳ hành động nào với kho khóa nếu mật khẩu kho khóa đã nhập hoặc mật khẩu khóa riêng không chính xác.

Nếu bạn không nhớ mật khẩu, thật không may, không có cách nào để khôi phục mật khẩu, và bạn sẽ cần phải tạo một kho khóa mới.

lỗi keytool: java.lang.Exception: Không thể thiết lập chuỗi từ trả lời

Lỗi trên xảy ra khi kho khóa không có chứng chỉ trung gian (còn được gọi là bó CA) cần thiết để thiết lập chuỗi đầy đủ. Đảm bảo bạn đã nhập chứng chỉ nhóm CA trước hoặc tốt hơn, hãy thử nhập chứng chỉ trong PKCS # 7.

Có một quá trình đã sử dụng cổng quản trị 4848 – có thể là một phiên bản khác của máy chủ GlassFish .Command start-domain failed .

Nếu bạn không thể bắt đầu tên miền với lỗi này được hiển thị, bạn sẽ cần phải giết quá trình java theo cách thủ công. Đầu tiên, chạy lệnh này để định vị tiến trình: sudo netstat -ntulp :

Sao chép PID của java chạy trên cổng GlassFish của bạn (15780 trong ảnh chụp màn hình ở trên), và chạy lệnh này để giết quá trình: giết 15780

Bây giờ bạn có thể bắt đầu tên miền bằng cách sử dụng lệnh asadmin thông thường.

 

Kiểm tra lỗi / Gỡ lỗi

Nếu bạn gặp phải bất kỳ sự cố nào với kết nối HTTPS, bạn nên kiểm tra lỗi nhật ký máy chủ, nằm trong glassfish4 / glassfish / domains / domain1 /logs/server.log .

Điều này sẽ chứa đầy đủ thông tin về các lỗi SSL; tuy nhiên, nếu bạn cảm thấy nó không đủ, bạn có thể đặt mức gỡ lỗi thành SSL trong domain.xml bằng cách thêm tùy chọn JVM sau trong phần <java-config> <jvm-options> -Djavax.net.debug = SSL </ jvm-options>

 

Kiểm tra kho khóa

Bạn có thể kiểm tra nội dung của kho khóa bằng lệnh này:

keytool -list -keystore mykeystore .jks

Điều này sẽ cung cấp cho bạn một danh sách ngắn của tất cả các mục trong kho khóa. Để có thêm thông tin về mỗi mục nhập (ví dụ: số lượng chứng chỉ nó chứa hoặc nếu có khóa riêng), bạn có thể thêm cờ -v:

keytool -list -v -keystore mykeystore .jks

Trong ví dụ dưới đây, ví dụ keystore.jks chỉ chứa một mục nhập với khóa riêng:

 

Thay đổi mật khẩu

Để chứng chỉ hoạt động, mật khẩu chính của GlassFish cho miền, mật khẩu kho khóa và mật khẩu khóa cá nhân phải giống nhau. Nếu không, bạn sẽ nhận được nhiều lỗi khác nhau khi kết nối HTTPS và trong nhật ký máy chủ. Để đảm bảo cả ba mật khẩu đều giống nhau, bạn có thể sử dụng các lệnh bên dưới để thay đổi chúng.

– GlassFish domain master password Mật ​​khẩu chính của
GlassFish là “changeit” theo mặc định và có thể được thay đổi với subcommand thay đổi-master-password của asadmin: 

asadmin change-master-password domain1

– Mật
khẩu kho khóa Mật khẩu cho kho khóa có thể được thay đổi bằng lệnh keytool sau: 

keytool -storepasswd -keystore mykeystore.jks

– Private mật khẩu chủ chốt 
Các mật khẩu để khóa riêng trong keystore có thể được thay đổi bằng lệnh này: 

keytool -keypasswd -alias myalias -keystore mykeystore.jks

bình luận

Leave a Comment