Trong môi trường làm việc localhost, đôi khi chúng ta cần thử nghiệm mã nguồn web bằng tên miền cục bộ với giao thức HTTPS trên trình duyệt. Thế nhưng, để giao thức HTTPS có thể hoạt động thì trước tiên chúng ta cần phải cài đặt chứng chỉ bảo mật số SSL cho tên miền cục bộ này trên máy chủ (máy chủ trong bài hướng dẫn này tất nhiên là chương trình tạo máy chủ ảo Xampp đã được cài đặt thành công trên máy tính cá nhân). Tóm lại, trong bài này mình sẽ hướng dẫn các bạn cài đặt SSL cho Xampp trên Windows cục bộ.
Một khi cài đặt SSL cho Xampp trên windows thành công thì chúng ta sẽ nhận được hai chữ Bảo Mật hoặc Secure cùng với ổ khóa xanh rờn trên thanh địa chỉ của Chrome nếu ngôn ngữ trình duyệt của bạn là English. Tương tự là Kết nối an toàn/Secure Connection đối với các trình duyệt khác.

Table of Contents
1 Tổng quan, quy trình & lưu ý trước khi bắt đầu.
Kể từ phiên bản 58 trở đi đối với các trình duyệt sử dụng mã nguồn mở Chromium, điển hình là trình duyệt Chrome cũng như phiên bản nâng cấp ‘đồng hành’ của một số trình duyệt thông dụng khác. Khi chúng ta truy cập địa chỉ trang web có sử dụng giao thức bảo mật HTTPS được tự ký (self signed) và cấp phát bằng OpenSSL thì sẽ gặp phải lỗi “Subject Alternative Name Missing” hay NET::ERR_CERT_COMMON_NAME_INVALID hoặc là “Your connection is not private”.
Xem chi tiết thông báo của các nhà phát triển Chrome tại đây.
Tổng quan
Sở dĩ gặp phải lỗi trên là do các nhà phát triển trình duyệt đã có một số thay đổi về phương thức xác thực chứng chỉ SSL khi nó được gọi từ trình duyệt thông qua giao thức HTTPS.
Giờ đây, các trình duyệt sẽ không còn quá chú trọng vào commonName (CN) như trong quá khứ nữa, mà chỉ tập trung vào subject alternaltive name (SAN) được cung cấp trong chứng chỉ SSL, SAN này tạm dịch là tên thay thế hay địa chỉ phụ, nó có thể là tên miền(domain name) hoặc địa chỉ IP.
Nếu chứng chỉ của bạn không có một SAN thì trình duyệt sẽ thông báo lỗi NET::ERR_CERT_COMMON_NAME_INVALID và cho biết kết nối này không bảo mật, không an toàn. Hoặc chứng chỉ của bạn có một SAN nhưng cấu hình không chính xác, ví dụ như tên miền chính đang sử dụng lại không nằm trong danh sách của SAN thì sẽ nhận được cảnh báo subject alternative name is missing.
Bạn có thể xem chi tiết cảnh báo này trong tab Bảo mật/Security của trình phát triển trình duyệt.
Để giải quyết vấn đề này, chỉ cần bạn ký lại một chứng chỉ SSL cấp cho tên miền với phần bổ trợ SAN (subjectAlternativeName extensions) chính xác là được. Và đây cũng là công việc chính của chúng ta thông qua bài viết này.
Quy trình chính trong bài viết
- Trở thành nhà cung cấp chứng thực số (Certificate Authority – CA).
- Tạo yêu cầu ký chứng chỉ (Certificate signing request – CSR) cho tên miền chính mặc định trong Xampp là localhost cùng các SAN của nó. Đồng thời dùng quyền lực của CA đã tạo để cấp phát chứng chỉ.
- Cấu hình và cài đặt SSL cho Xampp trên Windows của bạn.
- Tạo CSR và chứng thực SSL đồng thời cho nhiều tên miền ảo trong Xampp.
- Tổng kết quá trình cài đặt SSL cho Xampp trên Windows.
Lưu ý trước khi bắt đầu
- Bài hướng dẫn được thực hiện trên Windows 10 64 bit, là máy tính cá nhân chạy hệ điều hành Windows chứ không phải máy chủ web chạy Windows Server (các phiên bản Windows khác mình chưa thử nhưng thiết nghĩ cũng không có khác biệt gì nhiều) , Xampp được cài đặt tại C:\Packages-DEV\xampp với phiên bản Xampp 7.2.3 cùng OpenSSL 1.1.0g đi kèm.Tên miền chính sử dụng trong bài viết là tên miền cục bộ mặc định sau khi cài đặt hoàn thành Xampp localhost và các SAN của nó www.localhost, 127.0.0.1, ::1
- Tên miền ảo sử dụng để thử nghiệm cài đặt song song nhiều SSL là itshare-online.dev và SAN của nó www.itshare-online.dev, itshare cùng với IPv4 127.0.2.1 (Không rõ máy mình bị gì mà chỉ chạy được IPv6 trên mỗi miền localhost mà thôi, cho nên khi cài đặt ssl cho miền này mình bỏ qua IPv6, mà mục đích chủ yếu là thử nghiệm nên cũng không quan trọng lắm, khi nào tìm được nguyên nhân mình sẽ cập nhật bài viết sau.)
- Để tiện cho việc chỉnh sửa thì các bạn nên dùng các công cụ biên tập code như Notepad++, VS Code hoặc Sublime Text…
- Nếu chưa cài đặt Xampp thì đừng quên cài đặt hoàn tất chương trình Xampp theo hướng dẫn này.
- Để tránh lỗi ngoài ý muốn thì các bạn nên cài đặt lại một Xampp hoàn toàn mới trước khi bắt đầu theo hướng dẫn này nếu là bạn là người mới. Nếu bạn là người dùng nâng cao thì có thể tự cân nhắc để không phải phát sinh lỗi.
- Trong bài này chúng ta sẽ không sử dụng tập tin mặc định của Xampp mà tạo tập tin mới để tiện cho việc phục hồi lại dữ liệu nếu phát sinh lỗi.
2 Trở thành CA.
Để các chứng chỉ tạo ra hợp lệ và có hiệu lực thì việc trở thành nhà cung cấp chứng thực số tức CA là một bước vô cùng quan trọng không thể thiếu.
2.1 Tạo tập tin cấu hình mặc định cho CA
Truy cập vào thư mục C:\Packages-DEV\xampp\apache\conf, nhớ sửa lại theo đường dẫn của bạn nếu bạn cài đặt Xampp tại vị trí khác.
Trong C:\Packages-DEV\xampp\apache\conf, bạn sẽ dễ dàng nhìn thấy tập tin openssl.cnf, Đây là tập tin cấu hình gốc của OpenSSL, có thể mở lên để quan sát nhưng tốt nhất không nên chỉnh sửa gì trong đó, bởi vì trong bài này chúng ta sẽ không động vào nó.

Tại vị trí này, tạo một tập tin mới và đặt tên là openssl-ca.cnf
Bạn nào lười cũng có thể copy tập tin openssl.cnf rồi đổi tên lại thành openssl-ca.cnf. Sau đó dùng chương trình biên tập code của bạn mở file openssl-ca.cnf này lên. Dán toàn bộ code bên dưới vào, hoặc thay thể toàn bộ nếu các bạn copy từ tập tin openssl.cnf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
HOME = . #RANDFILE = $ENV::HOME/.rnd #################################################################### [ ca ] default_ca = CA_default # The default ca section [ CA_default ] base_dir = . certificate = $base_dir/conf/ssl.ca/cacert.pem # The CA certifcate private_key = $base_dir/conf/ssl.ca/cakey.pem # The CA private key new_certs_dir = $base_dir # Location for new certs after signing database = $base_dir/index.txt # Database index file serial = $base_dir/serial.txt # The current serial number unique_subject = no # Set to 'no' to allow creation of # several certificates with same subject. default_days = 730 # how long to certify for default_crl_days = 30 # how long before next CRL default_md = sha256 # use public key default MD preserve = no # keep passed DN ordering x509_extensions = ca_extensions # The extensions to add to the cert email_in_dn = no # Don't concat the email in the DN copy_extensions = copy # Required to copy SANs from CSR to cert #################################################################### [ req ] default_bits = 4096 default_keyfile = cakey.pem distinguished_name = ca_distinguished_name x509_extensions = ca_extensions string_mask = utf8only #################################################################### [ ca_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = VN stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = Go Vap localityName = Locality Name (eg, city) localityName_default = Ho Chi Minh organizationName = Organization Name (eg, company) organizationName_default = ITShare.Online Local CA, Limited organizationalUnitName = Organizational Unit (eg, division) organizationalUnitName_default = Server Certificate Provider commonName = Common Name (e.g. server FQDN or YOUR name) commonName_default = ITShare.Online Local CA emailAddress = Email Address emailAddress_default = ca@localhost #################################################################### [ ca_extensions ] subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always, issuer basicConstraints = critical, CA:true keyUsage = keyCertSign, cRLSign #################################################################### [ signing_policy ] countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional #################################################################### [ signing_req ] subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer basicConstraints = CA:FALSE keyUsage = digitalSignature, keyEncipherment [ policy_match ] organizationName = supplied |
Dòng 20 – default_days = 730 # Con số 730 chính là thời hạn có hiệu lực mặc đinh của chứng chỉ mà CA sẽ ký và cấp phát cho tên miền mà chúng ta yêu cầu. Tương đương 2 năm. Các bạn có thể thay đổi sao cho thích hợp với nhu cầu sử dụng của bản thân.
Nhớ sửa lại thông tin CA trong block [ ca_distinguished_name ] cho phù hợp với thông tin của bạn.
Dòng 41 – countryName_default = VN
Dòng 44 – stateOrProvinceName_default = Go Vap
Dòng 47 – localityName_default = Ho Chi Minh
Dòng 50 – organizationName_default = ITShare.Online Local CA, Limited
Dòng 53 – organizationalUnitName_default = Server Certificate Provider
Dòng 56 – commonName_default = ITShare.Online Local CA
Dòng 59 – emailAddress_default = ca@localhost
Còn lại, cái nào không hiểu thì tốt nhất giữ nguyên không nên động chạm vào. Hoặc nếu lười thì khỏi cần thay đổi, dùng luôn thông tin của mình cũng được. 🙂
Sau đó lưu tập tin lại.

2.2 Tiến hành đăng ký trở thành CA
2.2.1 Tạo tập tin makecert.ca.bat
Quay trở lại thư mục C:\Packages-DEV\xampp\apache ta cũng sẽ thấy tập tin tạo chứng chỉ mặc định makecert.bat của OpenSSL. Tương tự như trên, chúng ta cũng không nên đụng chạm vào tập tin gốc này mà tạo tập tin mới đặt tên là makecert.ca.bat
Tiếp đó mở tập tin makecert.ca.bat vừa tạo thay thế toàn bộ code bên dưới vào rồi lưu lại.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
@echo off set RANDFILE=.rnd set OPENSSL_CONF=./conf/openssl-ca.cnf if not exist .\conf\ssl.ca mkdir .\conf\ssl.ca if not exist .\conf\ssl.key mkdir .\conf\ssl.key if not exist .\conf\ssl.csr mkdir .\conf\ssl.csr if not exist .\conf\ssl.pem mkdir .\conf\ssl.pem bin\openssl req -x509 -newkey rsa:4096 -sha256 -nodes -out cacert.pem -days 3650 -outform PEM bin\openssl x509 -outform der -in cacert.pem -out cacert.crt bin\openssl rsa -in cakey.pem -out ca.key set OPENSSL_CONF= move /y cacert.pem .\conf\ssl.ca move /y cacert.crt .\conf\ssl.ca move /y cakey.pem .\conf\ssl.ca move /y ca.key .\conf\ssl.ca del .rnd echo. echo Chung nhan CA cua ban da duoc tao - Your CA certificate was created. echo. echo Chung nhan CA cua ban da duoc cap phat - The certificate was provided. echo. echo ----- ITShare.Online Channel - Online sharing channel on information technology.. echo. pause |
Chú ý: Dòng 10 có tham số -days 3650 nghĩa là CA mà chúng ta đang tạo sẽ có quyền lực trong 10 năm. Chúng ta có thể tái sử dụng CA này để cấp chứng chỉ cho vô số tên miền trong vòng 10 năm tới. Và dĩ nhiên thời hạn của chứng chỉ SSL mà ta dùng CA để cấp cho tên miền không được vượt quá thời hạn quyền lực của CA.
Tập tin makecert.ca.bat này đã được mình cố định để tái sử dụng liên tục, không nên chỉnh sửa gì trong này nếu bạn không thực sự hiểu về nó.

2.2.2 Thực thi makecert.ca.bat
Nhấp đúp chuột vào tập tin makecert.ca.bat vừa mới lưu để tiến hành đăng ký trở thành CA.
Một cửa sổ dòng lệnh CMD sẽ bật lên. Do mọi thông tin chúng ta đã tạo sẵn trong tập tin openssl-ca.cnf trong thư mục C:\Packages-DEV\xampp\apace\conf ở trên rồi nên cứ nhấn Enter để nó lấy thông tin theo mặc định. Sau khi nó chạy xong thì nhấn phiếm bất kỳ để thoát. Kết quả xuất ra trên CMD sẽ tương tự như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
Generating a 4096 bit RSA private key ............................................................++ ...........................++ writing new private key to 'cakey.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [VN]: State or Province Name (full name) [Go Vap]: Locality Name (eg, city) [Ho Chi Minh]: Organization Name (eg, company) [ITShare.Online Local CA, Limited]: Organizational Unit (eg, division) [Server Certificate Provider]: Common Name (e.g. server FQDN or YOUR name) [ITShare.Online Local CA]: Email Address [ca@localhost]: writing RSA key 1 file(s) moved. 1 file(s) moved. 1 file(s) moved. 1 file(s) moved. Chung nhan CA cua ban da duoc tao - Your CA certificate was created. Chung nhan CA cua ban da duoc cap phat - The certificate was provided. ----- ITShare.Online Channel - Online sharing channel on information technology.. Press any key to continue . . . |
Sau khi chạy xong, mở thư mục theo đường dẫn C:\Packages-DEV\xampp\apache\conf\ssl.ca ta sẽ thấy 4 tập tin được tạo như hình.

1.3 Hoàn tất thủ tục trở thành CA với Windows (Microsoft)
Đại khái là nói với Máy tính của bạn rằng bạn là một CA đáng tin cậy 🙂 Chẳng lẽ bản thân minh còn không tin được mình. 🙂
Nhấn phím Windows + R để mở hộp lệnh Run. Gõ lệnh certmgr.msc sau đó nhấn Enter để chạy chương trình Certificates Manager.

Hộp thoại Certificates Manager sẽ được gọi ra.

Chọn dòng thứ 2 Trusted Root Certification Authorities > Certificates (Chuột phải) > All Task > Import…

Trong hộp thoại Certificate Import Wizard hiện lên chọn Next

Trong hộp thoại tiếp theo, nhấn Browser và duyệt tìm tới file cacert.crt đã được khởi tạo ra trong quá trình đăng ký trở thành CA ở trên và nhấn Next.
Trong trường hợp của mình thì đường dẫn tuyệt đối của nó là C:\Packages-DEV\xampp\apache\conf\ssl.ca\cacert.crt

Next để lưu chứng nhận CA vào kho dữ liệu của máy tính

Finish để kết thúc quá trình lưu trữ CA

Sau khi nhấn Finish thì sẽ có một hộp thoại cảnh báo bảo mật Security Warning hiện lên.

Sở dĩ có cái cảnh báo này là bởi vì chúng ta đang tự tạo CA, đây là vấn đề an ninh nên Windows cần phải xác nhận lại lần cuối.
Chọn Yes để xác nhận và một cửa sổ thông báo thành công được hiện lên.

Click Ok để kết thúc quá trình kích hoạt chứng nhận.
Vậy là xong phần đăng ký trở thành CA.
2.4 Kiểm tra thông tin CA vừa tạo
Thử mở hộp thoại Certificates Manager > Trusted Root Certification Authorities > Certificates, tìm tới chứng nhận CA vừa tạo, nháy đúp chuột với mở lên kiểm tra lại thông tin xem thử ra sao.




3 Tạo CSR cho localhost cùng các SAN của nó, đồng thời dùng CA để chứng thực CSR
CSR – Certificate Signing Request là 1 đoạn text (chứa thông tin của chủ sở hữu tên miền) được mã hóa từ server (máy chủ) chuẩn bị cài đặt SSL. Nó chứa thông tin sẽ được bao gồm trong giấy chứng nhận của bạn như tên tổ chức của bạn, tên thông thường, địa phương và quốc gia. CSR sẽ được tạo ra trước khi gửi yêu cầu cho bên cung cấp chứng thức số tức CA để sinh ra chứng chỉ số SSL.
3.1 Tạo tập tin cấu hình SSL mặc định cho localhost
Tương tự như tạo file cấu hình cho CA ở trên. Truy cập vào thư mục cài đặt Xampp C:\Packages-DEV\xampp\apache\conf, nhớ sửa lại theo đường dẫn của bạn nếu bạn cài đặt Xampp tại vị trí khác.
Trong C:\Packages-DEV\xampp\apache\conf, tạo tập tin mới và đặt tên là openssl-localhost.cnf. Đây sẽ là tập tin cấu hình cho localhost và các SAN của nó.
Mở tập tin openssl-localhost.cnf lên và thay thế hoặc dán toàn bộ code bên dưới vào. Sau đó lưu lại.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
HOME = . #RANDFILE = $ENV::HOME/.rnd #################################################################### [ req ] default_bits = 2048 default_keyfile = localhost.key.pem distinguished_name = server_distinguished_name req_extensions = server_req_extensions string_mask = utf8only #################################################################### [ server_distinguished_name ] countryName = Country Name (2 letter code), nhan Enter de lay ma Quoc Gia mac dinh la countryName_default = VN stateOrProvinceName = State or Province Name (full name), nhan Enter de lay Tinh/Quan mac dinh la stateOrProvinceName_default = Go Vap localityName = Locality Name (eg, city), nhan Enter de lay Thanh Pho mac dinh la localityName_default = Ho Chi Minh organizationName = Organization Name (eg, company), nhan Enter de lay Ten Cong Ty mac dinh la organizationName_default = ITShare.Online Local Server, Limited commonName = Common Name (e.g. server FQDN or YOUR name), nhan Enter de lay ten chung CN mac dinh la commonName_default = My Localhost emailAddress = Email Address, nhan Enter de lay dia chi Email mac dinh la emailAddress_default = server@localhost #################################################################### [ server_req_extensions ] subjectKeyIdentifier = hash basicConstraints = CA:FALSE keyUsage = digitalSignature, keyEncipherment subjectAltName = @alternate_names nsComment = "OpenSSL Generated Certificate" #################################################################### [ alternate_names ] DNS.1 = localhost DNS.2 = www.localhost # IPv4 localhost IP.1 = 127.0.0.1 # IPv6 localhost IP.2 = ::1 |
Lưu ý: Thay đổi các thông số trong block [ server_distinguished_name ] cho phù hợp với thông tin của bạn. Lười thì dùng thông tin mặc định của mình cũng chả sao 🙂
* Dòng 27 – commonName_default = My Localhost
Trước đó, các trình duyệt web dựa vào thông tin commonName (CN) này để xác nhận miền chính sẽ được ký trong chứng chỉ, tức là miền localhost ở đây. Nhưng kể từ các phiên bản cao hơn như đã nói ở trên, các trình duyệt không còn dựa vào nó nữa mà sẽ chỉ dựa vào các DNS và IP trong block [ alternate_names ], tức là các SAN, cho nên ở dòng này các bạn có thể nhập tên của trang web hoặc chính tên riêng của các bạn cũng được, không nhất thiết phải là tên miền. Miễn sao miền được ký phải có mặt trong SAN.Lẽ ra, chúng ta còn thêm một bước nữa là đó là trỏ IP cho tên miền. Nhưng chúng ta đang làm việc với miền đặc biệt localhost, tất cả các miền có đuôi .localhost đều được mặc định trỏ tới IPv4: 127.0.0.1 và IPv6: ::1, vậy nên chúng ta cũng không cần phải tốn công để trỏ làm gì cho mệt. Tuy nhiên, bên dưới sẽ có phần cài đặt ssl cho tên miền ảo, lúc đó chúng ta cần làm thêm một bước trỏ IP cho miền trước khi thực thi ký chứng chỉ SSL.
3.2 Tiến hành tạo CSR cho miền localhost cùng các SAN đồng thời dùng CA để chứng thực CSR
3.2.1 Tạo tập tin thực thi makecert.localhost.bat
Quay trở lại thư mục C:\Packages-DEV\xampp\apache
Tương tự như ở trên, chúng ta cũng tạo mới một tập tin có tên makecert.localhost.bat rồi dán toàn bộ code sau đây vào:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
@echo off set RANDFILE=.rnd set OPENSSL_CONF=./conf/openssl-localhost.cnf echo. echo ----- Chuan bi tao tin yeu cau ky chung chi CSR 'localhost.csr' cho ten mien localhost echo ----- va khoa bao mat 'localhost.key' cua no. echo. echo ----- Nhan phim bat ky de bat dau. echo. pause bin\openssl req -newkey rsa:4096 -sha256 -nodes -out localhost.csr -outform PEM bin\openssl rsa -in localhost.key.pem -out localhost.key echo. echo ----- Xong phan tao key va CSR cho ten mien localhost. echo. echo ----- Nhan phim bat ky de xem va xac nhan thong tin cua file CSR vua tao. echo. pause bin\openssl req -text -noout -verify -in localhost.csr echo. echo ----- Neu moi thu deu ok thi nhan phim bat ky de tiep tuc. echo. pause echo. echo ----- Bat dau dung quyen luc cua CA de chung thuc echo ----- va cap chung chi SSL cho localhost va cac SAN cua localhost. echo. echo ----- Tiep theo ban se nhin thay 2 ket qua tra ve lien tuc nhu sau: echo. echo ----- Sign the certificate? [y/n]: echo. echo ----- 1 out of 1 certificate requests certified, commit? [y/n] echo. echo ----- Ca 2 lan deu go phim y va nhan Enter de xac nhan. echo. echo ----- Bay gio thi nhan phim bat ky de tiep tuc qua trinh. echo. pause if not exist index.txt type nul > index.txt if not exist index.txt.attr type nul > index.txt.attr if not exist serial.txt type nul > serial.txt if not exist serial.txt.attr type nul > serial.txt.attr echo 01> serial.txt set OPENSSL_CONF=./conf/openssl-ca.cnf bin\openssl ca -policy signing_policy -extensions signing_req -out localhost.pem -infiles localhost.csr echo. echo ----- CA da xac nhan xong chung chi cua ban. echo. echo ----- Nhan phim bat ky de xac nhan lai thong tin co trong chung chi ma CA vua ky. echo. pause bin\openssl x509 -in localhost.pem -text -noout echo. echo ----- Toi day ma khong thay co loi gi thi xem nhu da thanh cong! echo. echo ----- Nhan phim bat ky de bat dau don rac da phat sinh trong qua trinh thuc thi. echo. pause set OPENSSL_CONF= move /y localhost.csr .\conf\ssl.csr move /y localhost.pem .\conf\ssl.pem move /y localhost.key.pem .\conf\ssl.key move /y localhost.key .\conf\ssl.key if exist .rnd del .rnd if exist 01.pem del 01.pem if exist index.txt.attr del index.txt.attr if exist index.txt.attr.old del index.txt.attr.old if exist index.txt.old del index.txt.old if exist index.txt del index.txt if exist serial.txt.attr.old del serial.txt.attr.old if exist serial.txt.attr del serial.txt.attr if exist serial.txt.old del serial.txt.old if exist serial.txt del serial.txt echo. echo ----- Chung chi SSL cua ban da duoc tao - Your certificate was created. echo. echo ----- Chung Chi SSL cua ban da duoc chung thuc va cap phat boi CA - The certificate was provided by CA. echo. echo ----- ITShare.Online Channel - Online sharing channel on information technology. echo. pause |
Lưu ý: Dòng 51 và dòng 79, có số 01 chính là số serial của chứng chỉ. Bởi vì chúng ta dùng cùng một CA đã tạo ở trên để ký chứng nhận cho nhiều chứng chỉ cùng lúc cho nên mỗi khi ký tạo chứng chỉ mới thì các bạn nhớ thay đổi số serial này để tránh lỗi ngoài ý muốn.
Bây giờ chúng ta chuẩn bị ký tạo chứng chỉ đầu tiên được CA chứng nhận và cấp phát nó cho localhost nên sẽ có số serial là 01, mọi người có thể lấy số tùy thích nhưng phải là số nguyên và không được trùng nhau giữa các chứng chỉ.
Nhớ lưu tập tin lại.
3.2.2 Thực thi makecert.localhost.bat
Nhấp đúp chuột vào tập tin makecert.localhost.bat vừa mới lưu để tiến hành tạo yêu cầu ký chứng chỉ (CSR) cho tên miền localhost và các SAN của nó.
Một cửa sổ dòng lệnh CMD sẽ bật lên. Mọi thông tin chúng ta đã định sẵn trong tập tin cấu hình mặc định trong tập tin C:\Packages-DEV\xampp\apache\conf\openssl-localhost.cnf rồi nên cứ nhấn Enter là được. Chú ý đọc kỹ chú thích mình in sẵn trên CMD rồi hãy nhấn Enter.
Lẽ ra, mỗi một công đoạn, mình sẽ tạo một tập tin thực thi .bat khác và tiến hành riêng lẻ cho mọi người dễ hiểu. Nhưng mà do mình lười và cũng để tiết kiệm thời gian cho các bạn nên đã gộp chung tất cả trong một tập tin makecert.localhost.bat. Mình cũng đã ghi chú về ý nghĩa của mỗi công đoạn và dòng lệnh trong tập tin cả rồi, nó cũng sẽ được hiển thị trong của sổ CMD, mọi người cứ làm theo nhắc nhở trong ghi chú là được.
Kết quả xuất ra trên CMD khi chạy xong tập tin makecert.localhost.bat sẽ tương tự như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 |
----- Chuan bi tao tin yeu cau ky chung chi CSR 'localhost.csr' cho ten mien localhost ----- va khoa bao mat 'localhost.key' cua no. ----- Nhan phim bat ky de bat dau. Press any key to continue . . . Generating a 4096 bit RSA private key ...................................++ ..........................++ writing new private key to 'localhost.key.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code), nhan Enter de lay ma Quoc Gia mac dinh la [VN]: State or Province Name (full name), nhan Enter de lay Tinh/Quan mac dinh la [Go Vap]: Locality Name (eg, city), nhan Enter de lay Thanh Pho mac dinh la [Ho Chi Minh]: Organization Name (eg, company), nhan Enter de lay Ten Cong Ty mac dinh la [ITShare.Online Local Server, Limited]: Common Name (e.g. server FQDN or YOUR name), nhan Enter de lay ten chung CN mac dinh la [My Localhost]: Email Address, nhan Enter de lay dia chi Email mac dinh la [server@localhost]: writing RSA key ----- Xong phan tao key va CSR cho ten mien localhost. ----- Nhan phim bat ky de xem va xac nhan thong tin cua file CSR vua tao. Press any key to continue . . . verify OK Certificate Request: Data: Version: 1 (0x0) Subject: C = VN, ST = Go Vap, L = Ho Chi Minh, O = "ITShare.Online Local Server, Limited", CN = My Localhost, emailAddress = server@localhost Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (4096 bit) Modulus: 00:ea:7b:47:a4:82:d3:00:cb:d0:5a:5a:a2:90:b4: ab:02:80:fb:19:80:8c:ba:3c:31:55:62:4b:e5:62: fd:3f:53:d8:b3:0f:0f:83:f2:d4:5f:ba:b4:84:5c: ce:b9:98:8f:16:b0:71:91:9a:00:ef:26:37:b9:1a: db:a9:64:09:46:96:f2:6c:c4:87:ed:9d:0b:3d:c5: 46:2b:e7:83:e7:38:0d:7b:b1:a9:80:55:57:3b:0d: 08:9c:09:c0:74:9e:b1:7e:dc:a9:1e:53:cc:d0:37: 5a:41:1b:2a:a0:96:93:ad:21:ea:36:b3:cd:ce:e3: 1e:5b:3e:c4:02:3e:d6:03:ff:c9:c0:c9:57:d1:80: 05:31:7e:fa:60:12:5c:d2:8e:5e:15:fc:81:56:58: 63:3b:8f:f7:83:35:f3:a6:bc:68:b0:d5:97:d4:32: f2:f1:56:be:f6:54:ec:98:29:3c:dc:c6:1e:f5:b3: 67:b2:e7:90:a2:f3:c0:d8:1b:a0:82:4f:9e:82:fe: bd:f1:5f:ed:c9:99:ab:40:12:25:82:01:97:37:1b: 8e:8d:34:ac:35:2e:da:c4:93:09:d3:58:57:6c:68: 08:7d:2b:90:24:a3:36:08:0d:0e:e2:d4:a1:70:16: 74:11:04:7a:b6:b0:10:dc:bc:0e:1d:04:4e:08:8b: c9:b5:ce:15:da:db:49:4f:00:a7:6e:24:e7:f7:71: d8:a6:1a:1f:70:7d:0c:98:cd:60:c2:44:82:4a:29: 32:90:69:70:e4:54:1e:de:20:b5:4a:fc:86:f4:5c: 3a:6c:44:e0:87:c7:e6:b0:18:00:3c:06:3f:14:3e: 56:14:51:bb:00:97:d7:fc:d1:e2:fa:9d:01:22:31: e2:99:36:05:c8:50:15:24:33:67:a3:8b:9e:ad:63: 6e:cd:04:15:5b:47:a5:79:87:67:f1:a3:b7:48:fd: e1:26:42:46:62:36:9b:ab:7a:fc:b5:8d:4e:f5:7a: f8:d1:57:1a:b8:5a:17:a8:cd:ec:2b:57:1c:ac:a3: f0:2d:d6:f0:63:43:11:0a:07:03:4b:5b:53:6d:ab: 02:c4:d0:ae:a7:05:74:c2:cf:d9:6c:15:52:69:16: 66:6b:dc:7c:3c:14:c8:ba:3a:8f:ab:92:d1:53:5b: 3a:98:6c:47:aa:a5:27:c3:c7:3b:7b:c0:9c:54:ca: e3:9d:25:08:5c:97:4f:ce:38:b5:5d:09:34:f3:1c: c9:d0:ab:b5:90:38:30:c9:f1:c3:78:e4:19:b1:fa: 3e:c8:e3:8b:2d:fe:c3:6a:da:e9:62:a2:49:2c:61: 8c:cd:0f:77:97:91:f5:27:a5:98:36:25:6f:ef:19: 73:6f:3b Exponent: 65537 (0x10001) Attributes: Requested Extensions: X509v3 Subject Key Identifier: CB:7A:B8:83:62:3B:6E:0C:3B:10:62:FB:9B:FF:D5:B4:E8:1E:5E:3C X509v3 Basic Constraints: CA:FALSE X509v3 Key Usage: Digital Signature, Key Encipherment X509v3 Subject Alternative Name: DNS:localhost, DNS:www.localhost, IP Address:127.0.0.1, IP Address:0:0:0:0:0:0:0:1 Netscape Comment: OpenSSL Generated Certificate Signature Algorithm: sha256WithRSAEncryption 35:1a:41:ae:4a:45:22:fe:e9:67:43:e3:9f:7f:03:07:e0:92: 50:3f:67:78:3c:db:18:5e:05:33:42:b6:49:3b:41:9b:ac:c8: a5:95:24:04:c7:8c:0b:e2:36:7e:5a:33:bb:91:c7:66:d5:6a: af:2c:f5:c0:6a:0d:a1:7e:99:4b:46:7e:6a:84:78:70:ed:0e: 78:13:37:21:1f:65:8f:40:20:b2:b3:f9:de:0a:c4:68:7e:14: 93:99:88:d8:00:c9:5f:56:ec:55:f1:41:f2:47:55:b1:29:4d: 54:f1:b0:25:fc:99:2b:ce:03:5b:e3:a8:d1:28:b2:0c:f2:bb: 5c:15:7f:8a:4b:04:d0:cc:05:93:e7:73:37:77:5f:ed:f4:b8: c8:65:3d:03:48:48:da:a2:19:aa:a0:61:5d:0a:11:45:6f:b2: 6d:95:0f:b3:7f:ab:46:b3:8d:e9:a9:ab:1e:10:31:99:e7:4a: c7:6e:c6:9b:1c:8b:ca:f9:d6:01:25:62:86:6a:43:06:34:3d: b4:b9:f0:bc:5a:23:01:b9:44:c1:6c:53:44:7a:b2:99:5d:f3: ab:bb:2e:47:89:09:d5:78:b8:02:fb:bf:1b:11:1d:c3:61:92: ef:ad:00:76:21:9a:4e:81:66:88:24:10:cb:4f:68:ef:24:30: 7c:4b:b1:54:45:d5:25:8e:7b:8b:ae:65:51:91:8c:56:0d:46: 54:d3:b2:76:f9:7c:8f:51:9b:02:98:d4:61:09:22:b7:c1:88: 5b:56:c4:0e:ed:5a:25:2a:b1:32:fd:50:de:27:b8:71:d5:4a: a5:7c:4f:bc:86:a2:82:34:54:93:65:1c:5f:33:25:c6:b8:7b: 15:b5:3e:4e:65:3d:07:5b:59:22:9a:39:e0:50:04:50:46:c0: ca:13:63:33:cb:3d:02:7e:71:74:a3:07:b2:33:09:71:07:11: 52:aa:98:a2:74:c7:94:ee:1f:f1:44:47:f3:3f:52:a8:e1:95: 94:a9:54:6b:f1:94:5b:42:41:d4:fe:d3:37:4a:b5:e7:ec:5f: 80:f2:ae:32:35:05:99:1e:a8:51:46:9e:b5:c4:a0:f3:c3:eb: a5:90:65:0d:8d:14:6e:39:b3:a2:7f:12:84:98:50:e6:e5:a8: ca:6a:a2:76:a2:81:3d:5f:45:7f:5c:7b:30:7f:16:f8:1b:83: a8:c4:35:9d:40:f5:a0:83:cc:d1:27:01:8a:72:11:56:6d:de: da:7e:9d:6b:48:e8:6b:21:d7:cb:6e:99:57:9c:63:5d:b5:14: bc:7b:f2:21:f8:27:46:d6:12:50:b0:3c:7b:52:ce:7e:c6:d0: c9:7b:cb:d8:90:5b:12:ff ----- Neu moi thu deu ok thi nhan phim bat ky de tiep tuc. Press any key to continue . . . ----- Bat dau dung quyen luc cua CA de chung thuc ----- va cap chung chi SSL cho localhost va cac SAN cua localhost. ----- Tiep theo ban se nhin thay 2 ket qua tra ve lien tuc nhu sau: ----- Sign the certificate? [y/n]: ----- 1 out of 1 certificate requests certified, commit? [y/n] ----- Ca 2 lan deu go phim y va nhan Enter de xac nhan. ----- Bay gio thi nhan phim bat ky de tiep tuc qua trinh. Press any key to continue . . . Using configuration from ./conf/openssl-ca.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'VN' stateOrProvinceName :ASN.1 12:'Go Vap' localityName :ASN.1 12:'Ho Chi Minh' organizationName :ASN.1 12:'ITShare.Online Local Server, Limited' commonName :ASN.1 12:'My Localhost' Certificate is to be certified until Mar 30 13:04:36 2020 GMT (730 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated ----- CA da xac nhan xong chung chi cua ban. ----- Nhan phim bat ky de xac nhan lai thong tin co trong chung chi ma CA vua ky. Press any key to continue . . . Certificate: Data: Version: 3 (0x2) Serial Number: 1 (0x1) Signature Algorithm: sha256WithRSAEncryption Issuer: C = VN, ST = Go Vap, L = Ho Chi Minh, O = "ITShare.Online Local CA, Limited", OU = Server Certificate Provider, CN = ITShare.Online Local CA, emailAddress = ca@localhost Validity Not Before: Mar 31 13:04:36 2018 GMT Not After : Mar 30 13:04:36 2020 GMT Subject: C = VN, ST = Go Vap, L = Ho Chi Minh, O = "ITShare.Online Local Server, Limited", CN = My Localhost Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (4096 bit) Modulus: 00:ea:7b:47:a4:82:d3:00:cb:d0:5a:5a:a2:90:b4: ab:02:80:fb:19:80:8c:ba:3c:31:55:62:4b:e5:62: fd:3f:53:d8:b3:0f:0f:83:f2:d4:5f:ba:b4:84:5c: ce:b9:98:8f:16:b0:71:91:9a:00:ef:26:37:b9:1a: db:a9:64:09:46:96:f2:6c:c4:87:ed:9d:0b:3d:c5: 46:2b:e7:83:e7:38:0d:7b:b1:a9:80:55:57:3b:0d: 08:9c:09:c0:74:9e:b1:7e:dc:a9:1e:53:cc:d0:37: 5a:41:1b:2a:a0:96:93:ad:21:ea:36:b3:cd:ce:e3: 1e:5b:3e:c4:02:3e:d6:03:ff:c9:c0:c9:57:d1:80: 05:31:7e:fa:60:12:5c:d2:8e:5e:15:fc:81:56:58: 63:3b:8f:f7:83:35:f3:a6:bc:68:b0:d5:97:d4:32: f2:f1:56:be:f6:54:ec:98:29:3c:dc:c6:1e:f5:b3: 67:b2:e7:90:a2:f3:c0:d8:1b:a0:82:4f:9e:82:fe: bd:f1:5f:ed:c9:99:ab:40:12:25:82:01:97:37:1b: 8e:8d:34:ac:35:2e:da:c4:93:09:d3:58:57:6c:68: 08:7d:2b:90:24:a3:36:08:0d:0e:e2:d4:a1:70:16: 74:11:04:7a:b6:b0:10:dc:bc:0e:1d:04:4e:08:8b: c9:b5:ce:15:da:db:49:4f:00:a7:6e:24:e7:f7:71: d8:a6:1a:1f:70:7d:0c:98:cd:60:c2:44:82:4a:29: 32:90:69:70:e4:54:1e:de:20:b5:4a:fc:86:f4:5c: 3a:6c:44:e0:87:c7:e6:b0:18:00:3c:06:3f:14:3e: 56:14:51:bb:00:97:d7:fc:d1:e2:fa:9d:01:22:31: e2:99:36:05:c8:50:15:24:33:67:a3:8b:9e:ad:63: 6e:cd:04:15:5b:47:a5:79:87:67:f1:a3:b7:48:fd: e1:26:42:46:62:36:9b:ab:7a:fc:b5:8d:4e:f5:7a: f8:d1:57:1a:b8:5a:17:a8:cd:ec:2b:57:1c:ac:a3: f0:2d:d6:f0:63:43:11:0a:07:03:4b:5b:53:6d:ab: 02:c4:d0:ae:a7:05:74:c2:cf:d9:6c:15:52:69:16: 66:6b:dc:7c:3c:14:c8:ba:3a:8f:ab:92:d1:53:5b: 3a:98:6c:47:aa:a5:27:c3:c7:3b:7b:c0:9c:54:ca: e3:9d:25:08:5c:97:4f:ce:38:b5:5d:09:34:f3:1c: c9:d0:ab:b5:90:38:30:c9:f1:c3:78:e4:19:b1:fa: 3e:c8:e3:8b:2d:fe:c3:6a:da:e9:62:a2:49:2c:61: 8c:cd:0f:77:97:91:f5:27:a5:98:36:25:6f:ef:19: 73:6f:3b Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: CB:7A:B8:83:62:3B:6E:0C:3B:10:62:FB:9B:FF:D5:B4:E8:1E:5E:3C X509v3 Authority Key Identifier: keyid:BD:88:A4:D4:76:1E:B3:A5:07:70:93:D7:B5:83:88:88:9D:5E:E3:08 X509v3 Basic Constraints: CA:FALSE X509v3 Key Usage: Digital Signature, Key Encipherment X509v3 Subject Alternative Name: DNS:localhost, DNS:www.localhost, IP Address:127.0.0.1, IP Address:0:0:0:0:0:0:0:1 Netscape Comment: OpenSSL Generated Certificate Signature Algorithm: sha256WithRSAEncryption 42:d1:57:c8:a0:e2:cf:d9:8b:8e:e3:25:33:63:64:64:4d:e0: af:d1:5a:ed:1a:d5:24:5c:7c:c3:d3:94:aa:54:04:03:ce:c0: 50:3c:f6:b6:65:3a:0c:dc:ab:b2:fa:bb:85:e4:3c:33:29:7a: 57:3d:e7:e8:c1:55:45:ec:f9:06:6a:e3:48:db:69:af:df:fb: 2b:a6:3f:6e:30:34:9c:4a:a3:2c:77:52:26:cc:37:9b:13:44: 45:b3:24:36:fe:d6:40:70:89:3c:6b:49:4b:80:22:e9:33:67: 0f:b4:ae:ad:a9:87:e2:33:a4:2a:53:76:b6:6a:f8:58:40:57: 43:b2:c4:62:33:34:7c:29:48:74:23:53:18:60:e2:d9:d7:67: d8:e0:e2:12:71:b1:c9:8b:b5:f5:5b:4d:dc:ee:d0:49:68:fc: 46:0f:07:46:4c:36:7d:32:1a:f9:31:b3:1c:ca:ac:0d:a0:67: 30:0d:67:3b:2e:e6:dd:dc:aa:ea:9d:c1:c1:f3:42:df:20:1e: 01:94:3e:62:4b:89:39:e3:8e:28:cf:ea:56:4b:a1:ad:3f:99: 8c:42:e1:f4:59:96:72:60:da:1c:dc:45:d5:69:ce:ca:07:81: 23:09:09:8a:aa:99:10:cf:39:bf:97:b3:b9:58:0f:33:17:f7: 60:c7:0f:4d:45:52:95:f7:e5:ef:35:3e:63:b0:a7:55:39:d4: f7:77:93:4b:d0:5e:c8:6a:2d:f5:9a:a2:2a:bd:0a:04:46:07: bc:09:8c:b2:31:2d:83:60:64:17:1a:b1:a2:86:e5:4a:cf:88: c9:39:88:de:f8:19:9c:ac:df:9d:41:87:57:fc:7b:08:bf:20: 2f:ac:e8:a4:47:c8:4d:f1:e5:dc:9e:db:cc:8e:16:79:02:e0: 6d:3e:7a:1c:1a:41:37:17:59:8f:dd:7a:d0:2d:50:8a:bf:8d: 32:0a:1c:f0:4b:c5:d4:a1:86:6b:3e:c7:1e:67:7e:4d:21:60: d1:5c:5f:3e:d3:1b:3a:a9:65:c9:5c:41:99:f8:23:97:5f:45: f8:61:9a:db:4a:53:33:a0:64:73:97:4c:f6:f2:1d:e5:f4:79: eb:73:22:75:44:8c:37:39:d4:41:37:10:b5:ad:5f:53:f4:f1: 24:4e:07:16:c0:66:53:ba:20:ee:b2:5a:28:b1:97:fb:27:1a: 0a:0a:8e:f4:30:11:8a:ea:24:80:22:d4:d6:e5:5f:62:6b:39: 37:da:89:9a:d8:ac:f5:28:65:38:b1:c0:4f:45:2f:c2:86:7d: 39:aa:1c:15:2f:2e:7e:82:2c:53:47:de:5a:15:e5:a7:43:1d: 99:74:24:83:52:fd:a0:a3 ----- Toi day ma khong thay co loi gi thi xem nhu da thanh cong! ----- Nhan phim bat ky de bat dau don rac da phat sinh trong qua trinh thuc thi. Press any key to continue . . . 1 file(s) moved. 1 file(s) moved. 1 file(s) moved. 1 file(s) moved. ----- Chung chi SSL cua ban da duoc tao - Your certificate was created. ----- Chung Chi SSL cua ban da duoc chung thuc va cap phat boi CA - The certificate was provided by CA. ----- ITShare.Online Channel - Online sharing channel on information technology. Press any key to continue . . . |
Sau khi chạy xong thì nhấn phím bất kỳ để thoát CMD.
Xong phần này, đến phần kế tiếp
4 Cài đặt SSL cho Xampp trên Windows và cấu hình SSL cho miền localhost
Truy cập thư mục C:\Packages-DEV\xampp\apache\conf\extra tìm đến tập tin httpd-vhosts.conf, đổi tên tập tin này và tạo một tập tin httpd-vhosts.conf mới. Mục đích là để backup tập tin gốc, đề phòng có sai sót thì có cái mà phục hồi, đã nhắc nhiều lần ở trên rồi. 🙂
Dán toàn bộ nội dung phần code sau đây vào tập tin httpd-vhosts.conf mới và lưu lại:
1 2 3 4 5 6 7 8 |
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot "C:/Packages-DEV/xampp/htdocs" ServerName localhost ServerAlias www.localhost ErrorLog "logs/localhost-error.log" CustomLog "logs/localhost-access.log" common </VirtualHost> |
Tương tự, cũng trong thư mục C:\Packages-DEV\xampp\apache\conf\extra, tìm đến tập tin httpd-ssl.conf backup nó và tạo lại tập tin mới. Sau đó dán toàn bộ nội dung dưới đây vào và lưu lại:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
Listen 443 SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES SSLHonorCipherOrder on SSLProtocol all -SSLv3 SSLProxyProtocol all -SSLv3 SSLPassPhraseDialog builtin SSLSessionCache "shmcb:C:/Packages-DEV/xampp/apache/logs/ssl_scache(512000)" SSLSessionCacheTimeout 300 <VirtualHost *:443> DocumentRoot "C:/Packages-DEV/xampp/htdocs" ServerName localhost ServerAlias www.localhost ServerAdmin webmaster@localhost ErrorLog "C:/Packages-DEV/xampp/apache/logs/localhost-error.log" TransferLog "C:/Packages-DEV/xampp/apache/logs/localhost-access.log" SSLEngine on SSLCertificateFile "conf/ssl.pem/localhost.pem" SSLCertificateKeyFile "conf/ssl.key/localhost.key" SSLCACertificatePath "C:/Packages-DEV/xampp/apache/conf/ssl.ca" SSLCACertificateFile "C:/Packages-DEV/xampp/apache/conf/ssl.ca/cacert.pem" <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory "C:/Packages-DEV/xampp/apache/cgi-bin"> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog "C:/Packages-DEV/xampp/apache/logs/ssl_request_localhost.log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost> |
Nhớ kỹ thay đường dẫn thư mục Xampp cho đúng với cài đặt của bạn!
Giờ thì khởi động lại Xampp và truy cập localhost cùng các SAN của nó với giao thức HTTPS và xem kết quả đi nào!
Kiểm tra SSL của localhost




5 Tạo CSR và chứng thực SSL đồng thời cho nhiều tên miền ảo trong Xampp.
5.1 Trỏ IP cho tên miền ảo
Tìm đến tập tin hosts của Windows tại C:\Windows\System32\drivers\etc.
Mở tập tin hosts này bằng trình biên tập code của bạn dưới quyền Administrators, thêm vào cuối dòng code này
1 |
127.0.2.1 itshare-online.dev www.itshare-online.dev itshare |
Nhớ thay lại địa chỉ IP và tên miền ảo của bạn
Bởi vì máy mình đang có lỗi với IPv6 nên mình chỉ trỏ cho IPv4 ở đây, khi nào fix được mình sẽ update lại bài viết sau 🙂
Nhớ lưu tập tin lại.
5.2 Tạo tập tin cấu hình SSL mặc định cho tên miền ảo
Tương tự ở trên. Truy cập vào thư mục cài đặt Xamp C:\Packages-DEV\xampp\apache\conf, tạo mới một tập tin openssl-itshare-online.dev.cnf.
Dán vào tập tin openssl-itshare-online.dev.cnf toàn bộ code bên dưới và lưu lại.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
HOME = . #RANDFILE = $ENV::HOME/.rnd #################################################################### [ req ] default_bits = 2048 default_keyfile = itshare-online.dev.key.pem distinguished_name = server_distinguished_name req_extensions = server_req_extensions string_mask = utf8only #################################################################### [ server_distinguished_name ] countryName = Country Name (2 letter code), nhan Enter de lay ma Quoc Gia mac dinh la countryName_default = VN stateOrProvinceName = State or Province Name (full name), nhan Enter de lay Tinh/Quan mac dinh la stateOrProvinceName_default = Go Vap localityName = Locality Name (eg, city), nhan Enter de lay Thanh Pho mac dinh la localityName_default = Ho Chi Minh organizationName = Organization Name (eg, company), nhan Enter de lay Ten Cong Ty mac dinh la organizationName_default = ITShare.Online Server, Limited commonName = Common Name (e.g. server FQDN or YOUR name), nhan Enter de lay ten chung CN mac dinh la commonName_default = ITShare.Online Development emailAddress = Email Address, nhan Enter de lay dia chi Email mac dinh la emailAddress_default = server@itshare-online.dev #################################################################### [ server_req_extensions ] subjectKeyIdentifier = hash basicConstraints = CA:FALSE keyUsage = digitalSignature, keyEncipherment subjectAltName = @alternate_names nsComment = "OpenSSL Generated Certificate" #################################################################### [ alternate_names ] DNS.1 = itshare-online.dev DNS.2 = www.itshare-online.dev DNS.3 = itshare # IPv4 IP.1 = 127.0.2.1 # IPv6 |
Thật ra nó cũng tương tự như tạo tập tin openssl-localhost.cnf ở trên thôi, chỉ là sửa lại thông tin tên miền và địa chỉ IP.
Nhớ thay chứ kẻo quên 🙂
5.3. Tạo và thực thi tập tin thực thi makecert.bat cho miền ảo
Quay trở lại thư mục C:\Packages-DEV\xampp\apache, và tương tự chúng ta cũng tạo mới một tập tin có tên makecert.itshare-online.dev.bat rồi dán toàn bộ code sau đây vào
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
@echo off set RANDFILE=.rnd set OPENSSL_CONF=./conf/openssl-itshare-online.dev.cnf echo. echo ----- Chuan bi tao tin yeu cau ky chung chi CSR 'itshare-online.dev.csr' cho ten mien itshare-online.dev echo ----- va khoa bao mat 'itshare-online.dev.key' cua no. echo. echo ----- Nhan phim bat ky de bat dau. echo. pause bin\openssl req -newkey rsa:4096 -sha256 -nodes -out itshare-online.dev.csr -outform PEM bin\openssl rsa -in itshare-online.dev.key.pem -out itshare-online.dev.key echo. echo ----- Xong phan tao key va CSR cho ten mien itshare-online.dev. echo. echo ----- Nhan phim bat ky de xem va xac nhan thong tin cua file CSR vua tao. echo. pause bin\openssl req -text -noout -verify -in itshare-online.dev.csr echo. echo ----- Neu moi thu deu ok thi nhan phim bat ky de tiep tuc. echo. pause echo. echo ----- Bat dau dung quyen luc cua CA de chung thuc echo ----- va cap chung chi SSL cho itshare-online.dev va cac SAN cua itshare-online.dev. echo. echo ----- Tiep theo ban se nhin thay 2 ket qua tra ve lien tuc nhu sau: echo. echo ----- Sign the certificate? [y/n]: echo. echo ----- 1 out of 1 certificate requests certified, commit? [y/n] echo. echo ----- Ca 2 lan deu go phim y va nhan Enter de xac nhan. echo. echo ----- Bay gio thi nhan phim bat ky de tiep tuc qua trinh. echo. pause if not exist index.txt type nul > index.txt if not exist index.txt.attr type nul > index.txt.attr if not exist serial.txt type nul > serial.txt if not exist serial.txt.attr type nul > serial.txt.attr echo 127000002001> serial.txt set OPENSSL_CONF=./conf/openssl-ca.cnf bin\openssl ca -policy signing_policy -extensions signing_req -out itshare-online.dev.pem -infiles itshare-online.dev.csr echo. echo ----- CA da xac nhan xong chung chi cua ban. echo. echo ----- Nhan phim bat ky de xac nhan lai thong tin co trong chung chi ma CA vua ky. echo. pause bin\openssl x509 -in itshare-online.dev.pem -text -noout echo. echo ----- Toi day ma khong thay co loi gi thi xem nhu da thanh cong! echo. echo ----- Nhan phim bat ky de bat dau don rac da phat sinh trong qua trinh thuc thi. echo. pause set OPENSSL_CONF= move /y itshare-online.dev.csr .\conf\ssl.csr move /y itshare-online.dev.pem .\conf\ssl.pem move /y itshare-online.dev.key.pem .\conf\ssl.key move /y itshare-online.dev.key .\conf\ssl.key if exist .rnd del .rnd if exist 127000002001.pem del 127000002001.pem if exist index.txt.attr del index.txt.attr if exist index.txt.attr.old del index.txt.attr.old if exist index.txt.old del index.txt.old if exist index.txt del index.txt if exist serial.txt.attr.old del serial.txt.attr.old if exist serial.txt.attr del serial.txt.attr if exist serial.txt.old del serial.txt.old if exist serial.txt del serial.txt echo. echo ----- Chung chi SSL cua ban da duoc tao - Your certificate was created. echo. echo ----- Chung Chi SSL cua ban da duoc chung thuc va cap phat boi CA - The certificate was provided by CA. echo. echo ----- ITShare.Online Channel - Online sharing channel on information technology. echo. pause |
Nhớ thay số serial ở dòng 51 và dòng 79, sau đó lưu là và chạy như đối với makecert.localhost.bat ở trên.
Các bước khá tương tự nên mình không post ra đây luôn tránh loãng bài, các bạn cứ làm tương tự nhé.
Sau khi chạy xong chúng ta sẽ tiến hành bước kế tiếp bên dưới.
5.4 Cấu hình lại cho tập tin httpd-vhosts.conf và httpd-ssl.conf
5.4.1 Tập tin httpd-vhosts.conf
Thêm vào tập tin httpd-vhosts.conf đoạn cấu hình cho tên miền itshare-online.dev
1 2 3 4 5 6 7 8 |
<VirtualHost 127.0.2.1:80> ServerAdmin server@itshare-online.dev DocumentRoot "C:/Users/hongtam/MEGA/WWW-DEV/itshare-online.dev" ServerName itshare-online.dev ServerAlias www.itshare-online.dev itshare ErrorLog "logs/itshare-online.dev-error.log" CustomLog "logs/itshare-online.dev-access.log" common </VirtualHost> |
Và chúng ta có tập tin httpd-vhosts.conf hoàn chỉnh tương tự như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot "C:/Packages-DEV/xampp/htdocs" ServerName localhost ServerAlias www.localhost ErrorLog "logs/localhost-error.log" CustomLog "logs/localhost-access.log" common </VirtualHost> <VirtualHost 127.0.2.1:80> ServerAdmin server@itshare-online.dev DocumentRoot "C:/Users/hongtam/MEGA/WWW-DEV/itshare-online.dev" ServerName itshare-online.dev ServerAlias www.itshare-online.dev itshare ErrorLog "logs/itshare-online.dev-error.log" CustomLog "logs/itshare-online.dev-access.log" common </VirtualHost> |
5.4.2 Tập tin httpd-ssl.conf
Thêm vào tập tin httpd-ssl.conf đoạn cấu hình cho tên miền itshare-online.dev
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<VirtualHost 127.0.2.1:443> DocumentRoot "C:/Users/hongtam/MEGA/WWW-DEV/itshare-online.dev" ServerName itshare-online.dev ServerAlias www.itshare-online.dev itshare ServerAdmin server@itshare-online.dev ErrorLog "C:/Packages-DEV/xampp/apache/logs/itshare-online.dev-error.log" TransferLog "C:/Packages-DEV/xampp/apache/logs/itshare-online.dev-access.log" SSLEngine on SSLCertificateFile "conf/ssl.pem/itshare-online.dev.pem" SSLCertificateKeyFile "conf/ssl.key/itshare-online.dev.key" SSLCACertificatePath "C:/Packages-DEV/xampp/apache/conf/ssl.ca" SSLCACertificateFile "C:/Packages-DEV/xampp/apache/conf/ssl.ca/cacert.pem" <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory "C:/Packages-DEV/xampp/apache/cgi-bin"> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog "C:/Packages-DEV/xampp/apache/logs/ssl_request_itshare-online.dev.log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost> |
Nội dung tập tin httpd-ssl.conf hoàn chỉnh:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
Listen 443 SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES SSLHonorCipherOrder on SSLProtocol all -SSLv3 SSLProxyProtocol all -SSLv3 SSLPassPhraseDialog builtin SSLSessionCache "shmcb:C:/Packages-DEV/xampp/apache/logs/ssl_scache(512000)" SSLSessionCacheTimeout 300 <VirtualHost *:443> DocumentRoot "C:/Packages-DEV/xampp/htdocs" ServerName localhost ServerAlias www.localhost ServerAdmin webmaster@localhost ErrorLog "C:/Packages-DEV/xampp/apache/logs/localhost-error.log" TransferLog "C:/Packages-DEV/xampp/apache/logs/localhost-access.log" SSLEngine on SSLCertificateFile "conf/ssl.pem/localhost.pem" SSLCertificateKeyFile "conf/ssl.key/localhost.key" SSLCACertificatePath "C:/Packages-DEV/xampp/apache/conf/ssl.ca" SSLCACertificateFile "C:/Packages-DEV/xampp/apache/conf/ssl.ca/cacert.pem" <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory "C:/Packages-DEV/xampp/apache/cgi-bin"> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog "C:/Packages-DEV/xampp/apache/logs/ssl_request_localhost.log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost> <VirtualHost 127.0.2.1:443> DocumentRoot "C:/Users/hongtam/MEGA/WWW-DEV/itshare-online.dev" ServerName itshare-online.dev ServerAlias www.itshare-online.dev itshare ServerAdmin server@itshare-online.dev ErrorLog "C:/Packages-DEV/xampp/apache/logs/itshare-online.dev-error.log" TransferLog "C:/Packages-DEV/xampp/apache/logs/itshare-online.dev-access.log" SSLEngine on SSLCertificateFile "conf/ssl.pem/itshare-online.dev.pem" SSLCertificateKeyFile "conf/ssl.key/itshare-online.dev.key" SSLCACertificatePath "C:/Packages-DEV/xampp/apache/conf/ssl.ca" SSLCACertificateFile "C:/Packages-DEV/xampp/apache/conf/ssl.ca/cacert.pem" <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory "C:/Packages-DEV/xampp/apache/cgi-bin"> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog "C:/Packages-DEV/xampp/apache/logs/ssl_request_itshare-online.dev.log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost> |
Lưu ý ở chỗ này, trong block <VirtualHost 127.0.2.1:443> và <VirtualHost 127.0.2.1:80> của tên miền ảo mà chúng ta thêm, không thể dùng ký tự đại diện *:[port] như miền đặc biệt localhost mà phải chỉ định đúng IP đã trỏ trong tập tin hosts, IP của mình ở đây là 127.0.2.1 thì chứng chỉ mới có hiệu lực với IP
Nếu các bạn dùng ký tự đại diện là dấu * để trỏ thì chứng chỉ chỉ có hiệu lực đối với tên miền ảo và SAN của nó mà thôi, còn truy cập bằng IP thì lại lỗi chứng chỉ.
Chú ý: Dòng DocumentRoot “C:/Users/hongtam/MEGA/WWW-DEV/itshare-online.dev”
Mình không dùng thư mục Root htdocs mặc định của xampp mà dùng mod_userdir tạo thư mục web riêng, đồng bộ với MEGA để tự động backup code online, khỏi lo mất code hoặc lỗi cái gì cài lại máy là mệt vật vờ. =)Mọi người không dùng mod_userdir, cứ tạo một thư mục root cho tên miền ảo vừa xây dựng tại C:/Packages-DEV/xampp/htdocs là được. Cụ thể là C:/Packages-DEV/xampp/htdocs/itshare-online.dev rồi ném vào đó một tập tin html ví dụ để kiểm tra chứng chỉ. Của mình thì đã có sẵn nội dung rồi.
Lưu tất cả lại sau đó khởi động lại Xampp và kiểm tra thành quả.
5.5 Kiểm tra kết quả








6 Tổng kết quá trình cài đặt SSL cho Xampp trên Windows.
Nhìn vào tổng thể thì thấy dài dòng rườm rà, thật ra cũng chỉ vài bước đơn giản mà thôi. Chủ yếu mình trình bày từng bước cho những người mới dễ thấy.
Tóm gọn, việc cài đặt SSL cho Xampp trên Windows chỉ gồm hai phần chính, đầu tiên đăng ký trở thành CA, sau đó là dùng CA để cấp phát chứng chỉ cho tên miền.
Sau này muốn thêm tên miền thì cứ việc copy tập tin cũ sau đó đổi lại tên miền , IP và số serial là được, mà IP chỉ dành cho mục đích phát triển cho những ai thực sự cần. Nếu không cần thiết thì cứ bỏ phần IP trong chứng chỉ đi, chỉ trỏ trong tập tin hosts là được.
Để dễ dàng hơn trong việc cấp phát lại chứng chỉ thì mỗi tên miền mọi người nên tạo một tập tin cấu hình (.cnf) và thực thi (.bat) riêng như ở trên. Nếu không thì cứ dồn chung vào một tập tin cho gọn nếu các bạn hiểu mình đang làm gì.
Với lại theo kỹ thuật ngày càng phát triển thì bài viết này rất nhanh sẽ lỗi thời và không còn dùng được. Mọi người nếu làm theo mà không được thì báo lại, mình sẽ tranh thủ cập nhật kỹ thuật mới.
Bài viết chắc chắn sẽ có phần thiếu sót, có vấn đề gì thì mọi người cứ việc comment bên dưới, chúng ta sẽ cùng nhau giải quyết nó.
SAI SÓT THƯỜNG GẶP
Qua quá trình hỗ trợ khi các bạn báo lỗi thì mình thấy phần lớn các bạn đều làm sai ở 3 nơi:
– Thứ nhất: Mình cài đặt xampp ở thư mục C:\Packages-DEV\xampp, còn các bạn lại cài đặt ở thư mục khác. Khi copy các file cấu hình của mình về các bạn quên sửa lại mà vẫn đề nguyên văn.
– Thứ hai: Không để ý đến sự đồng nhất và chính xác của số seri trong tập tin thực thi .bat của miền cần tạo chứng chỉ (Xuất hiện trên 2 dòng 51 và 79 ở 3 vị trí).
– Thứ ba: Khi chạy tập tin thực thi .bat của miền cần tạo chứng chỉ, không phải lúc nào cũng nhấn Enter trên cửa sổ CMD, có 2 vị trí cần nhấn phím y sau đó mới nhấn Enter. Còn việc nhấn y ở đâu thì mọi người chịu khó đọc trên CMD mình có chú thích trực tiếp trên đó rồi.
Cho mình hỏi chút muốn chạy qua mạng LAN thì làm thế nào? (khi đã cài SSL)
Xin lỗi bạn, web này mình ngừng phát triển lâu rồi nên không kiểm tra, bây giờ log vào mới thấy comment của bạn. :))) Mình chưa chạy thử trên mạng Lan, nhưng theo tư duy của mình thì mình cho rằng có thể chạy được. Theo bạn thấy thì bài viết có 2 phần chính, 1 là đăng ký trở thành CA, 2 là dùng CA để xác thực cho miền client. Cho nên bạn chỉ cần đăng ký và cài đặt CA trên máy server của mạng LAN và mở cổng cho các máy client có quyền truy… Đọc tiếp »
Tự nhiên hôm nay truy cập localhost thấy “Kết nối của bạn tới trang web này không an toàn”, trong khi ngày hôm qua vẫn truy cập bình thường, hoang mang, ngơ ngát, bỡ ngỡ, không lẽ “default_days = 730” có hoạt động thật à, hay xampp bị lỗi nhỉ,
Xin lỗi bạn, web này mình ngừng phát triển lâu rồi nên không kiểm tra, bây giờ log vào mới thấy comment của bạn. :)))
[…] ra, sau khi cài đặt Xampp xong, các bạn có thể tham khảo thêm bài viết Cài đặt SSL cho Xampp trên Windows để có được một địa chỉ localhost chuyên nghiệp hơn, cũng như bắt kịp xu […]
Bạn ơi mình làm theo hướng dẫn của bạn rồi nhưng vẫn không được, bạn xem giúp mình với
Bạn cài đặt Anydesk sau đó gửi mình thông tin qua mail @Nguyễn Hồng Thế.dev">dev@Nguyễn Hồng Thế.dev mình hỗ trợ nhé.
Cho mình hỏi cái SSL RSA của mình hiện 2048 chứ ko phải 4096 như hướng dẫn thì nghĩa là gì vậy?
và mình cài wordpress local thì làm sao để khi mình gõ kami.vn thì nó tự chuyển qua https://kami.vn
(bình thường nó chỉ vào http://kami.vn mình phải tự thêm chữ S vào http mới đc)
thanks
2048 tức 2048bits là độ dài của khoá mã hoá bất đối xứng dùng để mã hoá chứng chỉ ssl, độ dài khoá càng cao thì việc tin tặc bẻ khoá ssl càng khó nhưng đồng nghĩa với việc tăng thêm gánh nặng phía máy chủ vì cần phải tốn nhiều tài nguyên hơn cho quá trình mã hoá và giải mã dữ liệu. Độ dài khoá thường dùng trước đây là 1024bits, 2048bits. Tuy nhiên, khoá 1024bits được cho là không an toàn nữa nên độ dài khoá mã hoá hiện tại thường là 2048bits hoặc 4096bits. Về… Đọc tiếp »
Xin chào Anh ạ,
Cảm ơn a đã hướng dẫn bài viết rất hay ạ, em đã làm được.
Nhưng em gặp vấn đề là khi gõ ‘webcuaban.com’ thì nó ra hiểu nhưng gõ ‘https://webcuaban.com’ thì được, cài này mình có cần fix hay không hay cứ gõ ‘https://webcuaban.com’ thôi.
Em cảm ơn anh rất nhiều.
nhưng gõ ‘https://webcuaban.com’ thì được??? Ý bạn là không được? Mình không hiểu lắm, bạn có thể mô tả lại không?
Xin lỗi vì em gõ thiếu ạ,
Là khi gõ “webcuaban.com” thì nó chỉ chạy “http”, muốn chạy “https” được thì phải gõ “https://webcuaban.com”, cái này mình fix hay cứ để vậy ạ.
Em xin cảm ơn rất nhiều ạ.
Ý bạn là tự động chuyển sang giao thức https cho website, về vấn đề này thì có rất nhiều phương pháp hướng dẫn trên mạng tùy thuộc vào cấu hình server mà sử dụng phương pháp phù hợp. Nếu bạn dùng apache thì thêm đoạn sau đây vào file cấu hình .htaccess sau đó khởi động lại apache là được. RewriteEngine on RewriteCond %{HTTPS} !=on [NC] RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 123 RewriteEngine onRewriteCond %{HTTPS} !=on [NC]RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] Còn vấn đề có nên chuyển toàn bộ sang https hay không thì nó phụ thuộc… Đọc tiếp »
mình bị https gạch đỏ..bạn hỗ trợ giúp
Đã hỗ trợ qua anydesk.
a ơi em cũng bị giống như bạn ở trên bị gạch đỏ a giúp e với. E sắp nộp demo đồ án ngoài trường ạ. E cảm ơn a
Bạn cũng cài đặt Anydesk sau đó gửi mình thông tin qua mail @Nguyễn Hồng Thế.dev">dev@Nguyễn Hồng Thế.dev mình hỗ trợ nhá.
Xampp của mình chạy cổng 8080 và 4433.
khi thiết lập lại tệp httpd-ssl.conf thì gặp lỗi port.
mình past lại tệp gốc thì vẫn chạy bình thường.
Và xóa chứng chỉ CA để cài lại có được không, thao tác ở cmd mình gặp vấn đề với y và enter.
Bạn có thể cài đặt lại CA và không cần xóa cái cũ, nó sẽ bị cái mới ghi đè lên. Với bạn chạy trên port khác thì vui lòng cấu hình đồng bộ giữa port trong file config và port trong Xampp Panel. Với khi truy cập thì nhớ kèm theo hậu tố port ở phía sau. Ví dụ bạn sài port 4433 thì url web của bạn sẽ là https://webcuaban.com:4433
Nếu vẫn không giải quyết được vấn đề của bạn thì mình có thể hỗ trợ qua teamview.
Mình đã gỡ cài đặt xampp và cài lại thì phát sinh lỗi.
Mình gặp chút vấn đề khi install apache với dòng lỗi: windows cannot find xampp/apache/bin/httpd.exe , make sure you typed the name corectly, and then try again.
Bạn có thể giúp mình không.
Có thể bạn gỡ cài đặt không sạch, sau khi gỡ cài đặt có khởi động máy tính không? Do Xampp cần quyền administrator. Với lỗi này có thể do bạn cài đặt ở xampp ở thư mục khác và cấu hình đường dẫn không đúng. Bạn có dùng skype không? Nếu có thì add skype mình skype:honggiatamthieu và gửi thông tin teamview mình xem hoặc gửi qua mail @Nguyễn Hồng Thế.dev">dev@Nguyễn Hồng Thế.dev cũng được.
Em làm theo và vẫn thấy nó hiển thị không bảo mật, click vào thì thấy đã có chứng chỉ như đã tạo nhưng không hợp lệ.
Bạn đọc không kỹ nên làm sai lúc chạy lệnh trên cmd rồi đó, chú ý trên cmd có 2 lần nhập y để đồng ý chứ không phải cứ nhấn mỗi enter không đâu, mình có chú thích kỹ trên cmd rồi nhưng đa số các bạn toàn nhấn enter cho đã tay chứ chả thèm đọc nên phần lớn đều lỗi tại bước này. Bạn thử lại xem.
Em làm được rồi ! Em cảm ơn :)) bước chạy cmd em có nhấn “y” nhưng bước đổi serial ở dòng 79 em ko để ý có tới 2 chỗ cần đổi, em chỉ đổi 1 :)) Cảm ơn anh nhiều
Vâng, rất vui vì đã giúp được bạn! 🙂
bạn hỗ trợ giúp, tôi không hiện lên ổ khóa xanh
Mình làm từ trên xuống dưới không có lỗi gì, nhưng không thành công!
Khi vào web nó báo Certificate (invatid)
Xin lỗi bạn vì đã trả lời chậm, không biết bạn đã làm được chưa? Còn cần sự trợ giúp của mình không?
khi mình double lick vào makecert.localhost.bat rồi nhấn phím bất kì báo lỗi ” The system cannot find the path specified ”
giúp mình với ạ
Mình đã làm giống hết nhưng sao khi chạy nó vẫn là http.
Mình đang gặp lỗi này không thể tạo ssl cho xampp local host bạn có thể giúp mình không ạ
Bạn vui lòng gửi mình thông tin teamview mình xem thử nhé.
Mình làm đến cuối bước 3 thì không Start đc Apache, cứ báo lỗi do port 80 đã sử dụng (Ban đầu mình config lại localhost là port 8081), xem lại bài hướng dẫn của bạn thì chỉ có đúng file httpd-vhost là dùng đến cổng 80, mình đã thử đổi lại 8081 vẫn ko ăn thua, vấn đề ở file httpd-ssl (vì mình có thử backup lại thì start apache được nhưng vẫn ko vào https được)
Bạn có teamview thì giúp mình nhé
Xin lỗi bạn, mình đang bận công việc ở ngoài. Tầm 8h mình mới về, hẹn bạn teamview lúc 8h được không?
ok b, mình sẽ đợi
được chưa bạn ơi, giúp mình với
Mình vừa về, bạn gửi mình thông tin teamview nhé.
ID: 1 047 203 847
Pass d431am
Lỗi của @TakTran khắc phục như thế nào vậy 2 anh?
Xin lỗi bạn, mình đang có việc ở ngoài nên không thể hỗ trợ trực tiếp được. Tầm 7h tối mình mới về nhà. Lỗi của TakTran là do chạy chứng chỉ không đúng cách. Với cấu hình port cũng sai.
Lỗi này sửa như thế nào vậy ạ?
Bạn có thể teamv giúp mình được không? Email: luannvkr@gmail.com
Xin lỗi bạn, mấy ngày nay mình bận công việc nên không check mail được. Không biết bạn có còn cần sự trợ giúp của mình hay không?
Cám ơn bạn. Bài viết của bạn rất chi tiết. Mình làm theo các hướng dẫn bên trên, đến lúc truy cập vào tên miền ảo trong trình duyệt thì bị lỗi Access forbidden! error 403. Mình cũng đã tìm được cách khắc phục là trong đoạn cấu hình của 2 tệp tin httpd-vhosts.conf và httpd-ssl.conf thêm vào đằng trước dòng đoạn code sau là OK
<Directory "C:/Users/hongtam/MEGA/WWW-DEV/itshare-online.dev">
Order Deny,Allow
Allow from all
Require all granted
</Directory>
Cảm ơn chia sẻ của bạn rất nhiều. Và cũng rất vui vì đã giúp được bạn.
Mình làm đến bước cuối cùng lun nhưng khi bật xampp nó báo lỗi
9:04:48 AM [Apache] Error: Apache shutdown unexpectedly.
mình đổi lại file config cũ của nó thì đc 2 file confix ở extral nó k nhận bạn à
Xin lỗi bạn vì đã trả lời chậm, cuối ngày mình mới có thời gian rảnh.
Bạn đã làm được chưa? Nếu chưa bạn gửi mình file logs chi tiết trong thư mục apache mình mới tra xét lỗi rõ ràng được. Hoặc hẹn thời gian mình teamview xem sao nhé.
Ban ơi khi chạy file bat mình chỉ tạo ra đc có 2 file mình sai chổ nào ta
ca.key và cakey.pem
Minh crash nhu vay la sao vay a @@ [Tue Aug 14 18:51:17.158391 2018] [ssl:warn] [pid 4364:tid 252] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name [Tue Aug 14 18:51:17.255397 2018] [ssl:warn] [pid 4364:tid 252] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name [Tue Aug 14 18:51:17.341402 2018] [mpm_winnt:notice] [pid 4364:tid 252] AH00455: Apache/2.4.34 (Win32) OpenSSL/1.1.0h PHP/7.2.8 configured -- resuming normal operations [Tue Aug 14 18:51:17.341402 2018] [mpm_winnt:notice] [pid 4364:tid 252] AH00456: Apache Lounge VC15 Server built: Jul 11 2018 12:13:24 [Tue Aug 14 18:51:17.341402 2018] [core:notice] [pid… Đọc tiếp »
Lỗi này là do bạn không chịu khó đọc theo hướng dẫn của mình. Domain http://www.example.com là domain mặc định nằm trong file xampp\apache\conf\extra\httpd-ssl.conf, ở bước 3 mình đã nói rõ là backup file mặc định lại xong tạo một file httpd-ssl.conf khác và copy nội dung mình để ở trên vào. Bạn chịu khó đọc kỹ lại hướng dẫn nhé, đừng thấy dài mà lười đọc, lướt lướt rồi lỗi mà không biết lỗi ở đâu. =))
anh ơi cho e hỏi chút, e cũng đang gặp lỗi về file: httpd-ssl.conf, e có backup lại file nhưng ko biết lỗi ở đâu, khi sửa file httpd-ssl.conf thì start apche trên Xampp thì nó báo lỗi : Error: Apache shutdown unexpectedly. 15:04:17 [Apache] This may be due to a blocked port, missing dependencies, 15:04:17 [Apache] improper privileges, a crash, or a shutdown by another method. 15:04:17 [Apache] Press the Logs button to view error logs and check 15:04:17 [Apache] the Windows Event Viewer for more clues 15:04:17 [Apache] If you need more help, copy and post this 15:04:17… Đọc tiếp »
Máy bạn có cài teamview không? nếu có bạn vui lòng gửi mình thông tin teamview qua email support@itshare.online mình login kiểm tra trực tiếp thử xem sao. Chứ theo thông báo lỗi thì đây là lỗi chung do nhiều nguyên nhân khó xác định.
dạ e vừa gửi teamview, nếu khi nào rảnh a vào xem giúp em
anh ơi Teamview hết hạn dùng thử. a dùng Ultraview nhé: ID: 12 430 900 Pas: 2729
Bạn thử đọc kỹ lại lần nữa và lào theo từng bước. Nếu lỗi nữa thì liên hệ mình teamview hướng dẫn cụ thể.
Da ban teamviewer minh lun dc ko a
Chào bạn, bây giờ mình mới có thời gian rảnh, nếu vẫn còn cần trợ giúp thì bạn vui lòng gửi thông tin teamview vào mail support@itshare.online mình sẽ kiểm tra và giúp bạn nhé.
bạn nào bị lỗi check kĩ phần run cmd makecert.localhost.cnf nhã phải bấm y như chủ thớt, nếu không xampp lỗi log :
id 616] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name.
tưởng lỗi port mà hông phảiThân 🙂
của e lỗi ở đoạn cmd makecert.localhost.bat: nó không hiện dãy khóa. mà ghi là variable has no value:\ crypto\conf\conf-def. chứ không hiện dãy khóa được mã như trong hình nên không chạy được ssl. e đoán là thiếu cái gì đó nhưng không biết thiếu gì . a giúp e với hay team giúp e
Bạn vui lòng gửi thông tin teamview vào mail support@itshare.online mình kiểm tra xem sao nhé =)
em đã gửi mail. a check em với
Error: Apache shutdown unexpectedly.
19:56:24 [Apache] This may be due to a blocked port, missing dependencies,
19:56:24 [Apache] improper privileges, a crash, or a shutdown by another method.
19:56:24 [Apache] Press the Logs button to view error logs and check
19:56:24 [Apache] the Windows Event Viewer for more clues
19:56:24 [Apache] If you need more help, copy and post this
19:56:24 [Apache] entire log window on the forums
ad giúp mình với ạ – ko mở dc apache
Bạn làm tới bước nào thì bị lỗi? Lỗi này chung chung quá mình không có giải pháp, bạn vui lòng gửi mình nội dung file log chi tiết hơn tại thư mục ..\xampp\apache\logs\error.log nhé.
Bác ơi! em cũng dính lỗi này, bật Xampp lên ko khởi động apache được, ấn start nó cứ bị như zậy. huhu
Bạn chịu khó đọc kỹ bài nhé, mình thấy nhiều bạn báo lỗi, sau khi kiểm tra thì là do đọc không kỹ bài, chắc do bài dài quá nên lười đọc. Hoặc có thể gửi thông tin teamview vào mail support@itshare.online mình kiểm tra trực tiếp nhé.