ໃຊ້ຕົວຕົນຂອງປາຍທາງສຳລັບ Java TLS ຜ່ານ SOCKS
ເຊື່ອມຕໍ່ຜ່ານ SOCKS ກ່ອນ, ແລ້ວຊັ້ນ SSLSocket ດ້ວຍຊື່ໂຮສຂອງເວັບໄຊ ແລະ ການກວດສອບ HTTPS ທີ່ຊັດເຈນ.
ຈຸດສຸດທ້າຍ SOCKS ພາເຈົ້າໄປຫາເວັບໄຊ. ຄູ່ TLS ພາຍໃນການເຊື່ອມຕໍ່ນັ້ນແມ່ນເວັບໄຊເອງ, ດັ່ງນັ້ນສົ່ງຊື່ໂຮສຂອງປາຍທາງໃຫ້ໂຮງງານຊອກເກັດທີ່ຊັ້ນໄວ້:
String destination = "example.com";
int destinationPort = 443;
Proxy proxy = new Proxy(
Proxy.Type.SOCKS,
new InetSocketAddress("127.0.0.1", 1080)
);
try (Socket transport = new Socket(proxy)) {
transport.connect(
InetSocketAddress.createUnresolved(destination, destinationPort),
5000
);
SSLSocketFactory factory =
(SSLSocketFactory) SSLSocketFactory.getDefault();
try (SSLSocket tls = (SSLSocket) factory.createSocket(
transport, destination, destinationPort, true)) {
SSLParameters parameters = tls.getSSLParameters();
parameters.setEndpointIdentificationAlgorithm("HTTPS");
tls.setSSLParameters(parameters);
tls.setSoTimeout(15000);
tls.startHandshake();
// Send the application's HTTPS request through tls.
}
}ສ່ວນນີ້ສົມມຸດການນຳເຂົ້າ Java networking ແລະ TLS ມາດຕະຖານ, ການຕັ້ງຄ່າຄວາມໄວ້ວາງໃຈເລີ່ມຕົ້ນທີ່ມີຢູ່ແລ້ວ ແລະ ການເຊື່ອມຕໍ່ SOCKS ທີ່ບໍ່ຕ້ອງການຂໍ້ມູນຢືນຢັນພຣັອກຊີ. ມັນເຮັດການຈັບມື; ແອັບຯຍັງຕ້ອງສົ່ງຄຳຂໍ HTTP ໃນຮູບແບບທີ່ເຊີບເວີຄາດຫວັງ. ສຳລັບເປົ້າໝາຍ HTTPS ສາທາລະນະໃນເສັ້ນທາງສາທາລະນະທີ່ອະນຸຍາດ ລາຍຊື່ພຣັອກຊີ SOCKS ສະເໜີຈຸດສຸດທ້າຍທີ່ເປັນຕົວເລືອກ; ຈັບຄູ່ເວີຊັນຂອງເຊີບເວີ ແລະ ການຮອງຮັບຊື່ໂຮສກັບເສັ້ນທາງຊອກເກັດ Java ນີ້.
ອ່ານຕົວຕົນສອງຢ່າງໃນຕົວຢ່າງ
127.0.0.1:1080 ແມ່ນຈຸດສຸດທ້າຍຂອງພຣັອກຊີ, ເຂົ້າເຖິງໄດ້ຈາກຂະບວນການ Java ນີ້. destination ແລະ destinationPort ລະບຸເວັບໄຊ. createUnresolved ຮັກສາຊື່ໂຮສນັ້ນສຳລັບເສັ້ນທາງ SOCKS ແທນທີ່ຈະແກ້ໄຂມັນກ່ອນເວລາຢູ່ລູກຄ້າ.
createSocket ທີ່ຊັ້ນໄວ້ໄດ້ຮັບຕົວຕົນຂອງປາຍທາງ. setEndpointIdentificationAlgorithm("HTTPS") ຮ້ອງຂໍການກວດສອບຊື່ໂຮສຂອງມັນຢ່າງຊັດເຈນ. ຄວາມໄວ້ວາງໃຈໃນລະບົບໃບຢັ້ງຢືນຂອງ SSLSocket ດິບບໍ່ໄດ້ພິສູດໂດຍຕົວມັນເອງວ່າການກວດສອບຊື່ໂຮສເປີດໃຊ້ງານ. ການປ່ຽນຊື່ພຣັອກຊີ ຫຼື loopback ເພື່ອກົດທັບຄວາມບໍ່ຕົງກັນອາດຢືນຢັນຈຸດສຸດທ້າຍທີ່ຜິດ.
ເກັບຄວາມໄວ້ວາງໃຈ ແລະ ການເຮັດຄວາມສະອາດໄວ້ກັບໄລຍະຂອງມັນ
ໂຮງງານເລີ່ມຕົ້ນໃຊ້ການຈັດລຽງຄວາມໄວ້ວາງໃຈທີ່ຕັ້ງຄ່າໄວ້ຂອງ JVM. ແອັບຯທີ່ມີຄວາມຕ້ອງການສ່ວນຕົວສາມາດໃຊ້ໂຮງງານ SSLContext ທີ່ເລີ່ມຕົ້ນຢ່າງເໝາະສົມແທນ. ການເລືອກນັ້ນແຍກຈາກເສັ້ນທາງ SOCKS; ຜູ້ຈັດການຄວາມໄວ້ວາງໃຈທີ່ຮັບໃບຢັ້ງຢືນທຸກໃບບໍ່ໄດ້ແກ້ຊື່ຄູ່ທີ່ຜິດ.
ການປະຕິເສດ SOCKS ເກີດຂຶ້ນກ່ອນ TLS; ໃບຢັ້ງຢືນທີ່ບໍ່ໜ້າໄວ້ວາງໃຈ ຫຼື ຊື່ໂຮສທີ່ຜິດຈະລົ້ມເຫຼວໃນລະຫວ່າງ TLS; ຂໍ້ຜິດພາດ HTTP ອາດຕາມມາຫຼັງຈາກນັ້ນ. ການເຂົ້າສູ່ລະບົບພຣັອກຊີອະນຸຍາດຄຳຂໍອຸໂມງ ບໍ່ແມ່ນຢືນຢັນເວັບໄຊພາຍໃນ.
ການປິດຊອກເກັດທີ່ຊັ້ນໄວ້ເມື່ອເປີດການປິດອັດຕະໂນມັດຈະປິດການຂົນສົ່ງຂອງມັນ. ຂອບເຂດຊັບພະຍາກອນພາຍນອກກໍປິດການຂົນສົ່ງນັ້ນຖ້າການຫໍ່ ຫຼື ການຈັບມືລົ້ມເຫຼວກ່ອນການສຳເລັດປົກກະຕິ.