Cập nhật:
Hãy thử cách sau để cho phép xác thực khách hàng trong Tomcat.
Để làm cho tomcat tận dụng lợi thế của Xác thực ứng dụng khách, chúng tôi yêu cầu ba chứng chỉ. nghĩa là Chứng chỉ máy chủ cho Tomcat, Chứng chỉ ứng dụng khách cho trình duyệt và Chứng chỉ CA sẽ ký cả hai chứng chỉ được đề cập ở trên. Ở đây, tôi sẽ chỉ cách làm điều đó trong Windows.
Có hai cách.
1) Bạn phải có tệp CSR, tức là Yêu cầu ký chứng chỉ.Bạn có thể gửi cho Tổ chức phát hành chứng chỉ như Verisign hoặc Comodo hoặc nhiều người khác như họ. Họ sẽ cung cấp cho bạn chứng chỉ. Hoặc
2) Bạn có thể tạo Tổ chức phát hành chứng chỉ của riêng mình và ký giấy chứng nhận. Nhưng nó được khuyến khích để làm điều này cho chỉ sử dụng cá nhân.
Bạn nên cài đặt Java và OpenSSL để thực hiện các bước dưới đây.
Để tạo Yêu cầu ký chứng chỉ, bạn nên có khóa. Để tạo loại khóa lệnh sau trong CMD.
openssl genrsa -out Serverkey.key 1024
này sẽ tạo ra một tập tin "Serverkey.key". Kích thước khóa là 1024. Bạn có thể cung cấp cho nó theo yêu cầu của bạn.
Bây giờ, tạo tệp CSR với sự trợ giúp của lệnh sau.
openssl req -new -key Serverkey.key out ServerReq.csr -config /path/to/openssl.cnf
Khi bạn thực hiện lệnh này, bạn sẽ được yêu cầu cung cấp một số thông tin. Sau đó, bạn sẽ tìm thấy tệp CSR trong thư mục của mình. Bạn có thể gửi tệp này tới CA. Trong trường hợp, bạn đang làm điều này để sử dụng cá nhân của bạn, và bạn muốn có CA của riêng bạn, tạo ra một khóa và CSR cho CA của bạn với sự giúp đỡ của hai lệnh trên. Sau khi bạn có CSR cho CA, bạn có thể đăng nhập bằng khóa của CA với sự trợ giúp của lệnh sau.
openssl x509 -req -days 365 -in CAReq.csr -signkey CAKey.key out ca.crt
Khi bạn có chứng chỉ CA, bạn có thể sử dụng nó để ký giấy chứng nhận khác.
openssl x509 -req -days 365 -CA ca.crt -CAkey CAKey.key -CAcreateserial -in ServerReq.csr out server.crt
Bạn có thể sử dụng lệnh tương tự cho khách hàng giấy chứng nhận cũng.
Trình duyệt là khách hàng của chúng tôi tại đây, sẽ chấp nhận chứng chỉ định dạng P12. Định dạng P12 là một tệp chứa chứng chỉ của bạn cũng như khóa.
Để chuyển đổi CRT thành P12, hãy sử dụng lệnh sau.
openssl pkcs12 -Xuất -in server.crt -inkey ServerKey.key -chain -CAfile ca.crt out ServerCert.p12
Trong tomcat, có một truststore mà sẽ có của CA. chứng chỉ và một kho lưu trữ khác sẽ có khóa và chứng chỉ của máy chủ (tệp p12).
Để nhập chứng chỉ của CA vào kho tin cậy, hãy sử dụng lệnh sau.
keytool -import -alias CertAuth -keystore caCerts.jks -file CA.crt
Bạn có thể cung cấp bí danh như bất kỳ điều gì bạn muốn. Lưu ý mật khẩu mà bạn cung cấp khi được hỏi sau khi thực hiện lệnh trên. Chúng tôi sẽ sử dụng mật khẩu đó trong tệp server.xml. Tương tự áp dụng cho lệnh dưới đây.
Để nhập chứng chỉ định dạng p12 vào kho khóa, hãy sử dụng lệnh sau.
keytool -importkeystore -destkeystore tomcat.keystore -srckeystore -ServerCert.p12 -srcstoretype pkcs12 -alias 1
Bây giờ, thay đổi server.xml của tomcat như sau.
<Connector port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true" scheme="https" secure="true"
truststoreFile="path/to/truststorefile" truststorePass="password"
keystoreFile="path/to/keystorefile" keystorePass="password"
clientAuth="true" sslProtocol="TLS"
/>
Bây giờ, nhập chứng chỉ định dạng P12 của khách hàng vào trình duyệt. Sau đó, khởi động máy chủ tomcat và thử truy cập https://localhost:8443. Bạn có thể truy cập vào blog để biết phiên bản chi tiết của câu trả lời này. Hi vọng điêu nay co ich.
Tôi có xu hướng đồng ý với nhà cung cấp dịch vụ web, dựa trên thông tin bạn đã cung cấp. Họ đã chọn sử dụng cơ chế xác thực được hỗ trợ rộng rãi, tiêu chuẩn. Họ không có kinh doanh (trừ khi bạn trả tiền cho họ để tham khảo ý kiến) cho bạn biết làm thế nào để * thực hiện * giao diện mà họ đã chỉ định. May mắn thay, vì họ đã chọn một tiêu chuẩn được sử dụng rộng rãi, bạn có nhiều tài nguyên mà bạn có thể biến (nhiều trong số đó — như StackOverflow — là miễn phí), và học một công nghệ có thể có lợi cho bạn trong các ngữ cảnh khác. – erickson
Kẹp của tôi với chúng chạy sâu hơn chỉ là một vấn đề này. Chúng tôi không chỉ trả tiền để có quyền truy cập * đối với dịch vụ, nhưng chúng tôi cũng phải trả cho mỗi giao dịch, vì vậy tôi mong đợi ít nhất một chút trợ giúp (ngoài một vài tệp PDF mơ hồ hầu như không có chi tiết kỹ thuật trong đó) . Tất cả các nhà cung cấp dịch vụ bên thứ 3 khác của tôi ít nhất đưa ra cho tôi các ví dụ mã hoặc có thể chỉ cho tôi đúng hướng khi tôi có câu hỏi. – dragonmantank