เจฒเฉเจ เจเจนเจจเจพเจ เจฒเจ เจฒเจพเจญเจฆเจพเจเจ เจนเฉเจตเฉเจเจพ เจเฉ:
- เจเจน เจเจพเจฃเจฆเจพ เจนเฉ เจเจฟ เจเจฒเจพเจเฉฐเจ เจธเจฐเจเฉเจซเจฟเจเฉเจ เจเฉ เจนเฉ เจ เจคเฉ เจธเจฎเจเจฆเจพ เจนเฉ เจเจฟ เจเจธเจจเฉเฉฐ เจฎเฉเจฌเจพเจเจฒ เจธเจซเจพเจฐเฉ 'เจคเฉ เจตเฉเจฌเจธเจพเจเจ เจฆเฉ เจฒเฉเฉ เจเจฟเจเจ เจนเฉ;
- เจฎเฉเจ เจตเฉเจฌ เจธเฉเจตเจพเจตเจพเจ เจจเฉเฉฐ เจฒเฉเจเจพเจ เจฆเฉ เจเฉฑเจ เจธเฉเจฎเจค เจฆเจพเจเจฐเฉ เจเจพเจ เจธเจฟเจฐเจซเจผ เจเจชเจฃเฉ เจฒเจ เจชเฉเจฐเจเจพเจธเจผเจฟเจค เจเจฐเจจเจพ เจเจพเจนเจพเจเจเจพ;
- เจธเฉเจเจฆเจพ เจนเฉ เจเจฟ เจธเจญ เจเฉเจ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจเจฟเจธเฉ เจฆเฉเจเจฐเจพ เจเฉเจคเจพ เจเจฟเจ เจนเฉ, เจ เจคเฉ เจธเฉฐเจธเจพเจฐ เจจเฉเฉฐ เจฅเฉเฉเจพ เจนเฉเจฐ เจธเฉเจตเจฟเจงเจพเจเจจเจ เจ เจคเฉ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจฌเจฃเจพเจเจฃเจพ เจเจพเจนเฉเฉฐเจฆเจพ เจนเฉ.
เจตเฉเจฌเจธเจพเจเฉเจ เจฆเจพ เจเจคเจฟเจนเจพเจธ เจฒเจเจญเจ 8 เจธเจพเจฒ เจชเจนเจฟเจฒเจพเจ เจธเจผเฉเจฐเฉ เจนเฉเจเจ เจธเฉเฅค เจชเจนเจฟเจฒเจพเจ, เจฒเฉฐเจฌเฉ HTTP เจฌเฉเจจเจคเฉเจเจ (เจ
เจธเจฒ เจตเจฟเฉฑเจ เจเจตเจพเจฌเจพเจ) เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจตเจฟเจงเฉเจเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจธเฉ: เจเจชเจญเฉเจเจคเจพ เจฆเฉ เจฌเฉเจฐเจพเจเจเจผเจฐ เจจเฉ เจธเจฐเจตเจฐ เจจเฉเฉฐ เจเฉฑเจ เจฌเฉเจจเจคเฉ เจญเฉเจเฉ เจ
เจคเฉ เจเจธเจฆเฉ เจเฉเจ เจเจตเจพเจฌ เจฆเฉเจฃ เจฆเฉ เจเจกเฉเจ เจเฉเจคเฉ, เจเจตเจพเจฌ เจคเฉเจ เจฌเจพเจ
เจฆ เจเจน เจฆเฉเจฌเจพเจฐเจพ เจเฉเฉเจฟเจ เจ
เจคเฉ เจเจกเฉเจ เจเฉเจคเฉเฅค เจชเจฐ เจซเจฟเจฐ เจตเฉเจฌเจธเจพเจเฉเจ เจฆเจฟเจเจพเจ เจฆเจฟเฉฑเจคเฉ.
เจเฉเจ เจธเจพเจฒ เจชเจนเจฟเจฒเจพเจ, เจ
เจธเฉเจ เจธเจผเฉเฉฑเจง PHP เจตเจฟเฉฑเจ เจเจชเจฃเจพ เจเฉเจฆ เจฆเจพ เจฒเจพเจเฉเจเจฐเจจ เจตเจฟเจเจธเจฟเจค เจเฉเจคเจพ เจนเฉ, เจเฉ เจเจฟ https เจฌเฉเจจเจคเฉเจเจ เจฆเฉ เจตเจฐเจคเฉเจ เจจเจนเฉเจ เจเจฐ เจธเจเจฆเจพ เจนเฉ, เจเจฟเจเจเจเจฟ เจเจน เจฒเจฟเฉฐเจ เจฒเฉเจ
เจฐ เจนเฉเฅค เจเฉเจ เจธเจฎเจพเจ เจชเจนเจฟเจฒเจพเจ, เจฒเจเจญเจ เจธเจพเจฐเฉ เจตเฉเจฌ เจธเจฐเจตเจฐเจพเจ เจจเฉ https เจ
เจคเฉ เจธเจนเจพเจเจคเจพ เจเฉเจจเฉเจเจธเจผเจจ: เจ
เฉฑเจชเจเฉเจฐเฉเจก 'เจคเฉ เจชเฉเจฐเฉเจเจธเฉ เจฌเฉเจจเจคเฉเจเจ เจธเจฟเฉฑเจ เจฒเจเจเจ เจนเจจเฅค
เจเจฆเฉเจ เจเจน เจตเจพเจชเจฐเจฟเจ, เจตเฉเจฌเจธเจพเจเฉเจ เจเจธเจชเฉเจ เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจฒเจ เจฒเจเจญเจ เจกเจฟเจซเฉเจฒเจ เจธเฉเจตเจพ เจฌเจฃ เจเจ, เจเจฟเจเจเจเจฟ เจธเจฐเจตเจฐ เจฆเฉ เจชเจนเจฟเจฒเจเจฆเจฎเฉ 'เจคเฉ เจเจชเจญเฉเจเจคเจพ เจจเฉเฉฐ เจธเจฎเฉฑเจเจฐเฉ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจจเจพ เจเจฟเฉฐเจจเจพ เจธเฉเจตเจฟเจงเจพเจเจจเจ เจนเฉ (เจเจฟเจธเฉ เจนเฉเจฐ เจเจชเจญเฉเจเจคเจพ เจคเฉเจ เจธเฉเจจเฉเจนเจพ เจญเฉเจเจฃเจพ เจเจพเจ เจเจฟเฉฑเจคเจฐ, เจฆเจธเจคเจพเจตเฉเจเจผ, เจชเฉเจธเจผเจเจพเจฐเฉ เจฆเจพ เจจเจตเจพเจ เจธเฉฐเจธเจเจฐเจฃ เจกเจพเจเจจเจฒเฉเจก เจเจฐเจจเจพ เจเจฟ เจเฉเจ เจนเฉเจฐ เจเจธ เจตเฉเจฒเฉ เจธเฉฐเจชเจพเจฆเจจ เจเจฐ เจฐเจฟเจนเจพ เจนเฉ)เฅค
เจนเจพเจฒเจพเจเจเจฟ เจเจฒเจพเจเฉฐเจ เจชเฉเจฐเจฎเจพเจฃ-เจชเฉฑเจคเจฐ เจเจพเจซเจผเฉ เจธเจฎเฉเจ เจคเฉเจ เจเจฒเฉ-เจฆเฉเจเจฒเฉ เจนเฉ, เจเจน เจ เจเฉ เจตเฉ เจฎเจพเฉเจพ เจธเจนเจฟเจฏเฉเจเฉ เจฌเจฃเจฟเจ เจนเฉเจเจ เจนเฉ, เจเจฟเจเจเจเจฟ เจเจน เจเจธ เจจเฉเฉฐ เจฌเจพเจเจชเจพเจธ เจเจฐเจจ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเจฆเฉ เจธเจฎเฉเจ เจฌเจนเฉเจค เจธเจพเจฐเฉเจเจ เจธเจฎเฉฑเจธเจฟเจเจตเจพเจ เจชเฉเจฆเจพ เจเจฐเจฆเจพ เจนเฉเฅค เจ เจคเฉ (เจธเฉฐเจญเจต เจคเฉเจฐ 'เจคเฉ :slightly_smiling_face: ) เจเจธ เจฒเจ IOS เจฌเฉเจฐเจพเจเจเจผเจฐ (เจธเจซเจพเจฐเฉ เจจเฉเฉฐ เจเฉฑเจก เจเฉ เจธเจพเจฐเฉ) เจเจธเจจเฉเฉฐ เจตเจฐเจคเจฃเจพ เจจเจนเฉเจ เจเจพเจนเฉเฉฐเจฆเฉ เจนเจจ เจ เจคเฉ เจธเจฅเจพเจจเจ เจธเจฐเจเฉเจซเจฟเจเฉเจ เจธเจเฉเจฐ เจคเฉเจ เจเจธเจฆเฉ เจฌเฉเจจเจคเฉ เจจเจนเฉเจ เจเจฐเจฆเฉ เจนเจจเฅค เจฒเฉเจเจเจจ/เจชเจพเจธ เจเจพเจ ssh เจเฉเฉฐเจเฉเจเจ เจเจพเจ เจซเจพเจเจฐเจตเจพเจฒ เจฐเจพเจนเฉเจ เจเจผเจฐเฉเจฐเฉ เจชเฉเจฐเจเจพเจ เจจเฉเฉฐ เจฌเฉฐเจฆ เจเจฐเจจ เจฆเฉ เจฎเฉเจเจพเจฌเจฒเฉ เจธเจฐเจเฉเจซเจฟเจเฉเจเจพเจ เจฆเฉ เจฌเจนเฉเจค เจธเจพเจฐเฉ เจซเจพเจเจฆเฉ เจนเจจเฅค เจชเจฐ เจเจน เจเจธ เจฌเจพเจฐเฉ เจจเจนเฉเจ เจนเฉเฅค
เจเจเจเจเจธ 'เจคเฉ, เจเฉฑเจ เจธเจฐเจเฉเจซเจฟเจเฉเจ เจธเจฅเจพเจชเจค เจเจฐเจจ เจฆเฉ เจตเจฟเจงเฉ เจเจพเจซเจผเฉ เจธเจฐเจฒ เจนเฉ (เจฌเจฟเจจเจพเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจฆเฉ เจจเจนเฉเจ), เจชเจฐ เจเจฎ เจคเฉเจฐ 'เจคเฉ เจเจน เจจเจฟเจฐเจฆเฉเจธเจผเจพเจ เจฆเฉ เจ เจจเฉเจธเจพเจฐ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ, เจเจฟเจธ เจตเจฟเฉฑเจเฉเจ เจฌเจนเฉเจค เจธเจพเจฐเฉ เจเฉฐเจเจฐเจจเฉเจ เจคเฉ เจนเจจ เจ เจคเฉ เจเฉ เจธเจฟเจฐเจซ เจธเจซเจพเจฐเฉ เจฌเฉเจฐเจพเจเจเจผเจฐ เจฒเจ เจเจชเจฒเจฌเจง เจนเจจ. เจฌเจฆเจเจฟเจธเจฎเจคเฉ เจจเจพเจฒ, Safari เจจเฉเฉฐ เจเจน เจจเจนเฉเจ เจชเจคเจพ เจเจฟ เจตเฉเฉฑเจฌ เจธเจพเจเจเจพเจ เจฒเจ เจเจฒเจพเจเฉฐเจ ะกert เจฆเฉ เจตเจฐเจคเฉเจ เจเจฟเจตเฉเจ เจเจฐเจจเฉ เจนเฉ, เจชเจฐ เจเฉฐเจเจฐเจจเฉเฉฑเจ 'เจคเฉ เจ เจเจฟเจนเฉ เจธเจฐเจเฉเจซเจฟเจเฉเจ เจเจฟเจตเฉเจ เจฌเจฃเจพเจเจฃเฉ เจนเจจ, เจเจธ เจฌเจพเจฐเฉ เจฌเจนเฉเจค เจธเจพเจฐเฉเจเจ เจนเจฆเจพเจเจคเจพเจ เจนเจจ, เจชเจฐ เจ เจญเจฟเจเจธ เจตเจฟเฉฑเจ เจเจน เจชเจนเฉเฉฐเจ เจคเฉเจ เจฌเจพเจนเจฐ เจนเฉเฅค
เจตเฉเฉฑเจฌเจธเจพเจเฉเจเจพเจ เจจเฉเฉฐ เจธเจฎเจเจฃ เจฒเจ, เจ
เจธเฉเจ เจนเฉเจ เจฆเจฟเฉฑเจคเฉ เจฏเฉเจเจจเจพ เจฆเฉ เจตเจฐเจคเฉเจ เจเฉเจคเฉ: เจธเจฎเฉฑเจธเจฟเจ/เจเจฒเจชเจจเจพ/เจนเฉฑเจฒเฅค
เจธเจฎเฉฑเจธเจฟเจ: เจเจเจเจเจธ เจ เจคเฉ เจนเฉเจฐ เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจฒเจ เจธเจซเจพเจฐเฉ เจฎเฉเจฌเจพเจเจฒ เจฌเฉเจฐเจพเจเจเจผเจฐ 'เจคเฉ เจเฉฑเจ เจเจฒเจพเจเฉฐเจ เจธเจฐเจเฉเจซเจฟเจเฉเจ เจฆเฉเจเจฐเจพ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจเฉเจคเฉ เจธเจฐเฉเจคเจพเจ เจฒเจ เจฌเฉเจจเจคเฉเจเจ เจจเฉเฉฐ เจชเฉเจฐเฉเจเจธเฉ เจเจฐเจจ เจตเฉเจฒเฉ เจตเฉเจฌ เจธเจพเจเจเจพเจ เจฒเจ เจเฉเจ เจธเจฎเจฐเจฅเจจ เจจเจนเฉเจ เจนเฉเฉฐเจฆเจพ เจนเฉ เจเจฟเจจเฉเจนเจพเจ เจจเฉ เจธเจฐเจเฉเจซเจฟเจเฉเจ เจธเจนเจพเจเจคเจพ เจจเฉเฉฐ เจธเจฎเจฐเฉฑเจฅ เจฌเจฃเจพเจเจ เจนเฉเฅค
เจเจฒเจชเจจเจพ:
- เจ เจเจฟเจนเฉ เจ เจชเจตเจพเจฆ เจจเฉเฉฐ เจ เฉฐเจฆเจฐเฉเจจเฉ/เจฌเจพเจนเจฐเฉ เจชเฉเจฐเฉเจเจธเฉ เจธเจฐเฉเจคเจพเจ เจฆเฉ เจตเฉเจฌเจธเจพเจเจเจพเจ เจฒเจ เจธเจฐเจเฉเจซเจฟเจเฉเจ (เจเจน เจเจพเจฃเจฆเฉ เจนเฉเจ เจเจฟ เจเฉเจ เจจเจนเฉเจ เจนเฉเจตเฉเจเจพ) เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฒเจ เจธเฉฐเจฐเจเจฟเจค เจเจฐเจจเจพ เจธเฉฐเจญเจต เจนเฉเฅค
- เจตเฉเจฌเจธเจพเจเฉเจ เจฒเจ, เจคเฉเจธเฉเจ เจ เจธเจฅเจพเจ เจธเฉเจธเจผเจจเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเฉฑเจ เจตเจฟเจฒเฉฑเจเจฃ, เจธเฉเจฐเฉฑเจเจฟเจ เจค เจ เจคเฉ เจฌเจเจพเจ เจฏเฉเจ เจเจจเฉเจเจธเจผเจจ เจฌเจฃเจพ เจธเจเจฆเฉ เจนเฉ เจเฉ เจเฉฑเจ เจเจฎ (เจเฉเจฐ-เจตเฉเจฌเจธเจพเจเฉเจ) เจฌเฉเจฐเจพเจเจเจผเจฐ เจฌเฉเจจเจคเฉ เจฆเฉ เจฆเฉเจฐเจพเจจ เจเจคเจชเฉฐเจจ เจนเฉเฉฐเจฆเฉ เจนเจจเฅค
- เจ เจธเจฅเจพเจ เจธเฉเจธเจผเจจเจพเจ เจจเฉเฉฐ เจเฉฑเจ เจชเฉเจฐเฉเจเจธเฉ เจตเฉเฉฑเจฌ เจธเจฐเจตเจฐ (เจธเจฟเจฐเจซเจผ เจฌเจฟเจฒเจ-เจเจจ เจฎเฉเจกเจฟเจเจฒ เจ เจคเฉ เจซเฉฐเจเจธเจผเจจเจพเจ) เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจฒเจพเจเฉ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค
- เจ เจธเจฅเจพเจ เจธเฉเจธเจผเจจ เจเฉเจเจจ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจคเจฟเจเจฐ เจเฉเจคเฉ เจ เจชเจพเจเฉ เจฎเฉเจกเฉเจเจฒ เจตเจเฉเจ เจฒเจพเจเฉ เจเฉเจคเฉ เจเจพ เจเฉเฉฑเจเฉ เจนเจจเฅค
- เจ เจธเจฅเจพเจ เจธเฉเจธเจผเจจ เจเฉเจเจจเจพเจ เจจเฉเฉฐ เจคเจพเจฐเจเจฟเจ เจคเฉเจฐ 'เจคเฉ เจเฉฐเจเจฐเฉเจเจธเจผเจจ เจขเจพเจเจเฉ เจจเฉเฉฐ เจกเจฟเจเจผเจพเจเจจ เจเจฐเจเฉ เจฒเจพเจเฉ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค
เจฒเจพเจเฉ เจนเฉเจฃ เจคเฉเจ เจฌเจพเจ เจฆ เจฆเจฟเจเจพเจ เจฆเฉเจฃ เจตเจพเจฒเฉ เจธเจฅเจฟเจคเฉเฅค
เจเจฆเฉเจธเจผ: เจธเฉเจตเจพเจตเจพเจ เจ เจคเฉ เจฌเฉเจจเจฟเจเจฆเฉ เจขเจพเจเจเฉ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจฌเจฟเจจเจพเจ เจตเจพเจงเฉ เจชเฉเจฐเฉเจเจฐเจพเจฎเจพเจ (เจเจฟเจตเฉเจ เจเจฟ VPN), เจฏเฉเจจเฉเจซเจพเจเจก เจ เจคเฉ เจธเฉเจฐเฉฑเจเจฟเจ เจค IOS 'เจคเฉ เจฎเฉเจฌเจพเจเจฒ เจซเจผเฉเจจ เจคเฉเจ เจชเจนเฉเฉฐเจเจฏเฉเจ เจนเฉเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉเฅค
เจตเจพเจงเฉ เจเฉเจเจพ: เจฎเฉเจฌเจพเจเจฒ เจเฉฐเจเจฐเจจเฉเฉฑเจ 'เจคเฉ เจธเจฎเฉฑเจเจฐเฉ เจฆเฉ เจคเฉเจเจผเฉ เจจเจพเจฒ เจกเจฟเจฒเฉเจตเจฐเฉ เจฆเฉ เจจเจพเจฒ เจธเจฎเฉเจ เจ เจคเฉ เจธเจฐเฉเจคเจพเจ/เจซเจผเฉเจจ เจเฉเจฐเฉเจซเจฟเจ เจฆเฉ เจฌเจเจค (เจตเฉเฉฑเจฌ เจธเจพเจเจเจพเจ เจคเฉเจ เจฌเจฟเจจเจพเจ เจเฉเจ เจธเฉเจตเจพเจตเจพเจ เจฌเฉเจฒเฉเฉเฉ เจฌเฉเจจเจคเฉเจเจ เจชเฉเจฆเจพ เจเจฐเจฆเฉเจเจ เจนเจจ)เฅค
เจเจฟเจตเฉเจ เจเฉเฉฑเจ เจเจฐเจจเจพ เจนเฉ?
1. เจชเฉฐเจจเฉ เจเฉเจฒเฉเจนเจฃเจพ:
โ ะฝะฐะฟัะธะผะตั, https://teamcity.yourdomain.com ะฒ ะผะพะฑะธะปัะฝะพะผ ะฑัะฐัะทะตัะต Safari (ะดะพัััะฟะตะฝ ัะฐะบะถะต ะฒ ะดะตัะบัะพะฟะฝะพะน ะฒะตััะธะธ) โ ะฒัะทัะฒะฐะตั ััะฟะตัะฝะพะต ะฟะพะดะบะปััะตะฝะธะต ะบ ะฒะตะฑ-ัะพะบะตัะฐะผ.
โ ะฝะฐะฟัะธะผะตั, https://teamcity.yourdomain.com/admin/admin.html?item=diagnostics&tab=webSโฆโ ะฟะพะบะฐะทัะฒะฐะตั ping/pong.
โ ะฝะฐะฟัะธะผะตั, https://rancher.yourdomain.com/p/c-84bnv:p-vkszd/workload/deployment:danidb:phโฆ-> viewlogs โ ะฟะพะบะฐะทัะฒะฐะตั ะปะพะณะธ ะบะพะฝัะตะนะฝะตัะฐ.
2. เจเจพเจ เจกเจฟเจตเฉเจฒเจชเจฐ เจเฉฐเจธเฉเจฒ เจตเจฟเฉฑเจ:
เจนเจพเจเจชเฉเจฅเฉเจธเจฟเจธ เจเฉเจธเจเจฟเฉฐเจ:
1. เจ เฉฐเจฆเจฐเฉเจจเฉ/เจฌเจพเจนเจฐเฉ เจชเฉเจฐเฉเจเจธเฉ เจธเจฐเฉเจคเจพเจ เจฆเฉ เจตเฉเฉฑเจฌ เจธเจพเจเจเจพเจ เจฒเจ เจธเจฐเจเฉเจซเจฟเจเฉเจ (เจเจน เจเจพเจฃเจฆเฉ เจนเฉเจ เจเจฟ เจเฉเจ เจจเจนเฉเจ เจนเฉเจตเฉเจเจพ) เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฒเจ เจ เจเจฟเจนเฉ เจ เจชเจตเจพเจฆ เจจเฉเฉฐ เจธเฉฐเจฐเจเจฟเจค เจเจฐเจจเจพ เจธเฉฐเจญเจต เจนเฉเฅค
เจเฉฑเจฅเฉ 2 เจนเฉฑเจฒ เจฒเฉฑเจญเฉ เจเจ เจนเจจ:
a) เจชเฉฑเจงเจฐ 'เจคเฉ
<Location sock*> SSLVerifyClient optional </Location>
<Location /> SSLVerifyClient require </Location>
เจชเจนเฉเฉฐเจ เจชเฉฑเจงเจฐ เจฌเจฆเจฒเฉ.
เจเจธ เจตเจฟเจงเฉ เจตเจฟเฉฑเจ เจนเฉเจ เจฒเจฟเจเฉเจเจ เจธเฉเจเจฎเจคเจพเจตเจพเจ เจนเจจ:
- เจชเฉเจฐเจฎเจพเจฃ-เจชเฉฑเจคเจฐ เจคเจธเจฆเฉเจ เจชเฉเจฐเฉเจเจธเฉเจก เจธเจฐเฉเจค เจฒเจ เจฌเฉเจจเจคเฉ เจคเฉเจ เจฌเจพเจ เจฆ เจนเฉเฉฐเจฆเฉ เจนเฉ, เจฏเจพเจจเฉ เจชเฉเจธเจ เจฌเฉเจจเจคเฉ เจนเฉเจเจกเจธเจผเฉเจเฅค เจเจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉ เจเจฟ เจชเฉเจฐเฉเจเจธเฉ เจชเจนเจฟเจฒเจพเจ เจฒเฉเจก เจเจฐเฉเจเฉ เจ เจคเฉ เจซเจฟเจฐ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจธเฉเจตเจพ เจฒเจ เจฌเฉเจจเจคเฉ เจจเฉเฉฐ เจเฉฑเจ เจฆเฉเจตเฉเจเฉเฅค เจเจน เจฌเฉเจฐเจพ เจนเฉ, เจชเจฐ เจจเจพเจเจผเฉเจ เจจเจนเฉเจ เจนเฉ;
- http2 เจชเฉเจฐเฉเจเฉเจเฉเจฒ เจตเจฟเฉฑเจ. เจเจน เจ
เจเฉ เจตเฉ เจกเจฐเจพเจซเจ เจตเจฟเฉฑเจ เจนเฉ, เจ
เจคเฉ เจฌเฉเจฐเจพเจเจเจผเจฐ เจจเจฟเจฐเจฎเจพเจคเจพ เจจเจนเฉเจ เจเจพเจฃเจฆเฉ เจเจฟ เจเจธเจจเฉเฉฐ เจเจฟเจตเฉเจ เจฒเจพเจเฉ เจเจฐเจจเจพ เจนเฉ #info about tls1.3 http2 เจชเฉเจธเจ เจนเฉเจเจกเจธเจผเฉเจ (เจนเฉเจฃ เจเฉฐเจฎ เจจเจนเฉเจ เจเจฐ เจฐเจฟเจนเจพ)
RFC 8740 เจฒเจพเจเฉ เจเจฐเฉ "HTTP/1.3 เจฆเฉ เจจเจพเจฒ TLS 2 เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจเจพ" ; - เจเจน เจธเจชเฉฑเจธเจผเจ เจจเจนเฉเจ เจนเฉ เจเจฟ เจเจธ เจชเฉเจฐเฉเจธเฉเจธเจฟเฉฐเจ เจจเฉเฉฐ เจเจฟเจตเฉเจ เจเจเจฎเฉเฉฑเจ เจเจฐเจจเจพ เจนเฉเฅค
b) เจเฉฑเจ เจฌเฉเจจเจฟเจเจฆเฉ เจชเฉฑเจงเจฐ 'เจคเฉ, เจฌเจฟเจจเจพเจ เจธเจฐเจเฉเจซเจฟเจเฉเจ เจฆเฉ ssl เจฆเฉ เจเจเจฟเจ เจฆเจฟเจเฅค
SSLVerifyClient เจฆเฉ เจฒเฉเฉ => SSLVerifyClient เจตเจฟเจเจฒเจชเจฟเจ เจนเฉ, เจชเจฐ เจเจน เจชเฉเจฐเฉเจเจธเฉ เจธเจฐเจตเจฐ เจฆเฉ เจธเฉเจฐเฉฑเจเจฟเจ เจชเฉฑเจงเจฐ เจจเฉเฉฐ เจเจเจพเจเจเจฆเจพ เจนเฉ, เจเจฟเจเจเจเจฟ เจ เจเจฟเจนเจพ เจเฉเจจเฉเจเจธเจผเจจ เจฌเจฟเจจเจพเจ เจธเจฐเจเฉเจซเจฟเจเฉเจ เจฆเฉ เจธเฉฐเจธเจพเจงเจฟเจค เจเฉเจคเจพ เจเจพเจตเฉเจเจพเฅค เจนเจพเจฒเจพเจเจเจฟ, เจคเฉเจธเฉเจ เจ เฉฑเจเฉ เจฆเจฟเฉฑเจคเฉ เจจเจฟเจฐเจฆเฉเจธเจผเจพเจ เจจเจพเจฒ เจชเฉเจฐเฉเจเจธเฉเจก เจธเฉเจตเจพเจตเจพเจ เจคเฉฑเจ เจชเจนเฉเฉฐเจ เจคเฉเจ เจเจจเจเจพเจฐ เจเจฐ เจธเจเจฆเฉ เจนเฉ:
RewriteEngine on
RewriteCond %{SSL:SSL_CLIENT_VERIFY} !=SUCCESS
RewriteRule .? - [F]
ErrorDocument 403 "You need a client side certificate issued by CAcert to access this site"
เจนเฉเจฐ เจตเจฟเจธเจคเฉเจฐเจฟเจค เจเจพเจฃเจเจพเจฐเฉ ssl เจฌเจพเจฐเฉ เจฒเฉเจ เจตเจฟเฉฑเจ เจชเจพเจ เจเจพ เจธเจเจฆเฉ เจนเฉ:
เจฆเฉเจตเจพเจ เจตเจฟเจเจฒเจชเจพเจ เจฆเฉ เจเจพเจเจ เจเฉเจคเฉ เจเจ, เจตเจฟเจเจฒเจช "b" เจจเฉเฉฐ เจเจธเจฆเฉ เจฌเจนเฉเจชเฉฑเจเฉเจคเจพ เจ เจคเฉ http2 เจชเฉเจฐเฉเจเฉเจเฉเจฒ เจจเจพเจฒ เจ เจจเฉเจเฉเจฒเจคเจพ เจฒเจ เจเฉเจฃเจฟเจ เจเจฟเจ เจธเฉเฅค
เจเจธ เจชเจฐเจฟเจเจฒเจชเจจเจพ เจฆเฉ เจคเจธเจฆเฉเจ เจจเฉเฉฐ เจชเฉเจฐเจพ เจเจฐเจจ เจฒเจ, เจเจธ เจจเฉ เจธเฉฐเจฐเจเจจเจพ เจฆเฉ เจจเจพเจฒ เจฌเจนเฉเจค เจธเจพเจฐเฉ เจชเฉเจฐเจฏเฉเจ เจเฉเจคเฉ; เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ เจกเจฟเจเจผเจพเจเจจ เจฆเฉ เจเจพเจเจ เจเฉเจคเฉ เจเจ:
if = เจฒเฉเฉ = เจฎเฉเฉ เจฒเจฟเจเฉ
เจ เจชเจพเจเฉ เจเฉเจฐ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจ เจชเจพเจเฉ HTTP เจธเจฐเจตเจฐ เจตเจฟเฉฑเจ เจธเจฎเฉเจเจฐเจจ
เจจเจคเฉเจเจพ เจนเฉเจ เจฆเจฟเฉฑเจคเฉ เจฌเฉเจจเจฟเจเจฆเฉ เจกเจฟเจเจผเจพเจเจจ เจนเฉ:
SSLVerifyClient optional
RewriteEngine on
RewriteCond %{SSL:SSL_CLIENT_VERIFY} !=SUCCESS
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule .? - [F]
#ErrorDocument 403 "You need a client side certificate issued by CAcert to access this site"
#websocket for safari without cert auth
<If "%{SSL:SSL_CLIENT_VERIFY} != 'SUCCESS'">
<If "%{HTTP:Upgrade} = 'websocket'">
...
#ะทะฐะผะตัะฐะตะผ ะฐะฒัะพัะธะทะฐัะธั ะฟะพ ะฒะปะฐะดะตะปััั ัะตััะธัะธะบะฐัะฐ ะฝะฐ ะฐะฒัะพัะธะทะฐัะธั ะฟะพ ะฝะพะผะตัั ะฟัะพัะพะบะพะปะฐ
SSLUserName SSl_PROTOCOL
</If>
</If>
เจธเจฐเจเฉเจซเจฟเจเฉเจ เจฆเฉ เจฎเจพเจฒเจ เจฆเฉเจเจฐเจพ เจฎเฉเจเฉเจฆเจพ เจชเฉเจฐเจฎเจพเจฃเฉเจเจฐเจจ เจจเฉเฉฐ เจงเจฟเจเจจ เจตเจฟเฉฑเจ เจฐเฉฑเจเจฆเฉ เจนเฉเจ, เจชเจฐ เจเฉฑเจ เจเฉเฉฐเจฎ เจธเจฐเจเฉเจซเจฟเจเฉเจ เจฆเฉ เจจเจพเจฒ, เจฎเฉเจจเฉเฉฐ เจเฉฑเจ เจเจชเจฒเจฌเจง เจตเฉเจฐเฉเจเจฌเจฒ SSl_PROTOCOL (SSL_CLIENT_S_DN_CN เจฆเฉ เจฌเจเจพเจ) เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจเฉฑเจ เจเฉเจฐ-เจฎเฉเจเฉเจฆ เจธเจฐเจเฉเจซเจฟเจเฉเจ เจฎเจพเจฒเจ เจธเจผเจพเจฎเจฒ เจเจฐเจจเจพ เจชเจฟเจ, เจฆเจธเจคเจพเจตเฉเจเจผ เจตเจฟเฉฑเจ เจนเฉเจฐ เจตเฉเจฐเจตเฉ:
2. เจตเฉเจฌเจธเจพเจเฉเจ เจฒเจ, เจคเฉเจธเฉเจ เจ
เจธเจฅเจพเจ เจธเฉเจธเจผเจจเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเฉฑเจ เจตเจฟเจฒเฉฑเจเจฃ, เจธเฉเจฐเฉฑเจเจฟเจ
เจค เจ
เจคเฉ เจธเฉเจฐเฉฑเจเจฟเจ
เจค เจเจจเฉเจเจธเจผเจจ เจฌเจฃเจพ เจธเจเจฆเฉ เจนเฉ เจเฉ เจเฉฑเจ เจเจฎ (เจเฉเจฐ-เจตเฉเจฌเจธเจพเจเฉเจ) เจฌเฉเจฐเจพเจเจเจผเจฐ เจฌเฉเจจเจคเฉ เจฆเฉ เจฆเฉเจฐเจพเจจ เจเจคเจชเฉฐเจจ เจนเฉเฉฐเจฆเฉ เจนเจจเฅค
เจชเจฟเจเจฒเฉ เจ เจจเฉเจญเจต เจฆเฉ เจเจงเจพเจฐ 'เจคเฉ, เจคเฉเจนเจพเจจเฉเฉฐ เจจเจฟเจฏเจฎเจค (เจเฉเจฐ-เจตเฉเฉฑเจฌ เจธเจพเจเฉเจ) เจฌเฉเจจเจคเฉ เจฆเฉ เจฆเฉเจฐเจพเจจ เจตเฉเฉฑเจฌ เจธเจพเจเจ เจเจจเฉเจเจธเจผเจจเจพเจ เจฒเจ เจ เจธเจฅเจพเจ เจเฉเจเจจ เจคเจฟเจเจฐ เจเจฐเจจ เจฒเจ เจธเฉฐเจฐเจเจจเจพ เจตเจฟเฉฑเจ เจเฉฑเจ เจตเจพเจงเฉ เจญเจพเจ เจเฉเฉเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค
#ะฟะพะดะณะพัะพะฒะบะฐ ะฟะตัะตะดะฐัะฐ ัะตะฑะต ะกookie ัะตัะตะท ะฟะพะปัะทะพะฒะฐัะตะปััะบะธะน ะฑัะฐัะทะตั
<If "%{SSL:SSL_CLIENT_VERIFY} = 'SUCCESS'">
<If "%{HTTP:Upgrade} != 'websocket'">
Header set Set-Cookie "websocket-allowed=true; path=/; Max-Age=100"
</If>
</If>
#ะฟัะพะฒะตัะบะฐ Cookie ะดะปั ัััะฐะฝะพะฒะปะตะฝะธั ะฒะตะฑ-ัะพะบะตั ัะพะตะดะธะฝะตะฝะธั
<source lang="javascript">
<If "%{SSL:SSL_CLIENT_VERIFY} != 'SUCCESS'">
<If "%{HTTP:Upgrade} = 'websocket'">
#check for exists cookie
#get and check
SetEnvIf Cookie "websocket-allowed=(.*)" env-var-name=$1
#or rewrite rule
RewriteCond %{HTTP_COOKIE} !^.*mycookie.*$
#or if
<If "%{HTTP_COOKIE} =~ /(^|; )cookie-names*=s*some-val(;|$)/ >
</If
</If>
</If>
เจเฉเจธเจเจฟเฉฐเจ เจจเฉ เจฆเจฟเจเจพเจเจ เจเจฟ เจเจน เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉ. เจเจชเจญเฉเจเจคเจพ เจฆเฉ เจฌเฉเจฐเจพเจเจเจผเจฐ เจฆเฉเจเจฐเจพ เจเฉเจเฉเจเจผ เจจเฉเฉฐ เจเจชเจฃเฉ เจเจช เจตเจฟเฉฑเจ เจเฉเจฐเจพเจเจธเจซเจฐ เจเจฐเจจเจพ เจธเฉฐเจญเจต เจนเฉเฅค
3. เจ เจธเจฅเจพเจ เจธเฉเจธเจผเจจเจพเจ เจจเฉเฉฐ เจเฉฑเจ เจชเฉเจฐเฉเจเจธเฉ เจตเฉเฉฑเจฌ เจธเจฐเจตเจฐ (เจธเจฟเจฐเจซเจผ เจฌเจฟเจฒเจ-เจเจจ เจฎเฉเจกเฉเจเจฒ เจ เจคเฉ เจซเฉฐเจเจธเจผเจจเจพเจ) เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจฒเจพเจเฉ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค
เจเจฟเจตเฉเจ เจเจฟ เจ เจธเฉเจ เจชเจนเจฟเจฒเจพเจ เจชเจคเจพ เจฒเจเจพเจเจ เจนเฉ, เจ เจชเจพเจเฉ เจตเจฟเฉฑเจ เจฌเจนเฉเจค เจธเจพเจฐเฉเจเจ เจฎเฉเฉฑเจ เจเจพเจฐเจเจเฉเจธเจผเจฒเจคเจพ เจนเจจ เจเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฐเจกเฉเจธเจผเจจเจฒ เจเฉฐเจธเจเฉเจฐเจเจ เจฌเจฃเจพเจเจฃ เจฆเฉ เจเจเจฟเจ เจฆเจฟเฉฐเจฆเฉเจเจ เจนเจจเฅค เจนเจพเจฒเจพเจเจเจฟ, เจธเจพเจจเฉเฉฐ เจธเจพเจกเฉ เจเจพเจฃเจเจพเจฐเฉ เจฆเฉ เจธเฉเจฐเฉฑเจเจฟเจ เจฒเจ เจธเจพเจงเจจเจพเจ เจฆเฉ เจฒเฉเฉ เจนเฉ เจเจฆเฉเจ เจเจน เจเจชเจญเฉเจเจคเจพ เจฆเฉ เจฌเฉเจฐเจพเจเจเจผเจฐ เจตเจฟเฉฑเจ เจนเฉ, เจเจธ เจฒเจ เจ เจธเฉเจ เจเจน เจธเจฅเจพเจชเจฟเจค เจเจฐเจฆเฉ เจนเจพเจ เจเจฟ เจเฉ เจธเจเฉเจฐ เจเจฐเจจเจพ เจนเฉ เจ เจคเฉ เจเจฟเจเจ, เจ เจคเฉ เจ เจธเฉเจ เจเจฟเจนเฉเฉ เจฌเจฟเจฒเจ-เจเจจ เจซเฉฐเจเจธเจผเจจเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจพเจเจเฉ:
- เจธเจพเจจเฉเฉฐ เจเฉฑเจ เจเฉเจเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ เจเฉ เจเจธเจพเจจเฉ เจจเจพเจฒ เจกเฉเจเฉเจก เจจเจนเฉเจ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค
- เจธเจพเจจเฉเฉฐ เจเฉฑเจ เจเฉเจเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ เจเจฟเจธ เจตเจฟเฉฑเจ เจ เจชเฉเจฐเจเจฒเจฟเจคเจคเจพ เจฌเจฃเฉ เจนเฉเจ เจนเฉ เจ เจคเฉ เจธเจฐเจตเจฐ 'เจคเฉ เจ เจชเฉเจฐเจเจฒเจฟเจคเจคเจพ เจฆเฉ เจเจพเจเจ เจเจฐเจจ เจฆเฉ เจฏเฉเจเจคเจพ เจนเฉเฅค
- เจธเจพเจจเฉเฉฐ เจเฉฑเจ เจเฉเจเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ เจเฉ เจธเจฐเจเฉเจซเจฟเจเฉเจ เจฆเฉ เจฎเจพเจฒเจ เจจเจพเจฒ เจเฉเฉเจฟเจ เจนเฉเจตเฉเจเจพเฅค
เจเจธ เจฒเจ เจเฉฑเจ เจนเฉเจธเจผเจฟเฉฐเจ เจซเฉฐเจเจธเจผเจจ, เจเฉฑเจ เจจเจฎเจ, เจ
เจคเฉ เจเฉเจเจจ เจฆเฉ เจเจฎเจฐ เจฒเจ เจเฉฑเจ เจฎเจฟเจคเฉ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉเฅค เจฆเจธเจคเจพเจตเฉเจเจผ เจฆเฉ เจเจงเจพเจฐ 'เจคเฉ
เจจเจคเฉเจเจพ เจเจน เจกเจฟเจเจผเจพเจเจจ เจธเฉ:
#ะฝะตั ัะตััะธัะธะบะฐัะฐ, ะธ ะพะฑัะฐัะตะฝะธะต ะบ websocket
<If "%{SSL:SSL_CLIENT_VERIFY} != 'SUCCESS'">
<If "%{HTTP:Upgrade} = 'websocket'">
SetEnvIf Cookie "zt-cert-sha1=([^;]+)" zt-cert-sha1=$1
SetEnvIf Cookie "zt-cert-uid=([^;]+)" zt-cert-uid=$1
SetEnvIf Cookie "zt-cert-date=([^;]+)" zt-cert-date=$1
#ัะพะปัะบะพ ัะฐะบ ะผะพะถะฝะพ ัะฐะฑะพัะฐัั ั ะฟะตัะตะผะตะฝะฝัะผะธ, ะฟะพะปััะตะฝะฝัะผะธ ะฒ env-ะฐั
ะฒ ััะพั ะผะพะผะตะฝั ะฒัะตะผะตะฝะธ, ะฑะพะปะตะต ะพะฝะธ ะฝะธะณะดะต ะฝะต ะดะพัััะฟะฝั ะดะปั ััะฝะบัะธะธ ั
ะตัะธัะพะฒะฐะฝะธั (ะฟะพ ะพัะดะตะปัะฝะพััะธ ะผะพะถะฝะพ, ะฝะพ ะฝะต ะฒะผะตััะต, ะดะฐ ะธ ะตัั ั ั
ะตัะธัะพะฒะฐะฝะธะตะผ)
<RequireAll>
Require expr %{sha1:salt1%{env:zt-cert-date}salt3%{env:zt-cert-uid}salt2} == %{env:zt-cert-sha1}
Require expr %{env:zt-cert-sha1} =~ /^.{40}$/
</RequireAll>
</If>
</If>
#ะตััั ัะตััะธัะธะบะฐั, ะทะฐะฟัะฐัะธะฒะฐะตััั ะฝะต websocket
<If "%{SSL:SSL_CLIENT_VERIFY} = 'SUCCESS'">
<If "%{HTTP:Upgrade} != 'websocket'">
SetEnvIf Cookie "zt-cert-sha1=([^;]+)" HAVE_zt-cert-sha1=$1
SetEnv zt_cert "path=/; HttpOnly;Secure;SameSite=Strict"
#ะะพะฒัะต ะบัะบะธ ััะฐะฒัััั, ะตัะปะธ ััะฐััั
ะฝะตั
Header add Set-Cookie "expr=zt-cert-sha1=%{sha1:salt1%{TIME}salt3%{SSL_CLIENT_S_DN_CN}salt2};%{env:zt_cert}" env=!HAVE_zt-cert-sha1
Header add Set-Cookie "expr=zt-cert-uid=%{SSL_CLIENT_S_DN_CN};%{env:zt_cert}" env=!HAVE_zt-cert-sha1
Header add Set-Cookie "expr=zt-cert-date=%{TIME};%{env:zt_cert}" env=!HAVE_zt-cert-sha1
</If>
</If>
เจเฉเจเจพ เจชเฉเจฐเจพเจชเจค เจเจฐ เจฒเจฟเจ เจเจฟเจ เจนเฉ, เจชเจฐ เจธเจฐเจตเจฐ เจ เจชเฉเจฐเจเจฒเจฟเจค เจนเฉเจฃ (เจคเฉเจธเฉเจ เจเฉฑเจ เจธเจพเจฒ เจชเฉเจฐเจพเจฃเฉ เจเฉเจเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐ เจธเจเจฆเฉ เจนเฉ) เจจเจพเจฒ เจธเจฎเฉฑเจธเจฟเจเจตเจพเจ เจนเจจ, เจเจฟเจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉ เจเจฟ เจเฉเจเจจ, เจนเจพเจฒเจพเจเจเจฟ เจ เฉฐเจฆเจฐเฉเจจเฉ เจตเจฐเจคเฉเจ เจฒเจ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจนเจจ, เจเจฆเจฏเฉเจเจฟเจ (เจชเฉเฉฐเจ) เจตเจฐเจคเฉเจ เจฒเจ เจ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจนเจจเฅค
4. เจ
เจธเจฅเจพเจ เจธเฉเจธเจผเจจ เจเฉเจเจจ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจคเจฟเจเจฐ เจเฉเจคเฉ เจ
เจชเจพเจเฉ เจฎเฉเจกเฉเจเจฒ เจตเจเฉเจ เจฒเจพเจเฉ เจเฉเจคเฉ เจเจพ เจเฉเฉฑเจเฉ เจนเจจเฅค
เจเฉฑเจ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจฃ เจธเจฎเฉฑเจธเจฟเจ เจชเจฟเจเจฒเฉ เจฆเฉเจนเจฐเจพเจ เจคเฉเจ เจฌเจฃเฉ เจฐเจนเฉ - เจเฉเจเจจ เจฌเฉเจขเจพเจชเฉ เจจเฉเฉฐ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจเจฐเจจ เจตเจฟเฉฑเจ เจ เจธเจฎเจฐเฉฑเจฅเจพเฅค
เจ เจธเฉเจ เจเฉฑเจ เจฐเฉเจกเฉเจฎเฉเจก เจฎเฉเจกเฉเจเจฒ เจฆเฉ เจคเจฒเจพเจธเจผ เจเจฐ เจฐเจนเฉ เจนเจพเจ เจเฉ เจเจน เจเจฐเจฆเจพ เจนเฉ, เจธเจผเจฌเจฆเจพเจ เจฆเฉ เจ เจจเฉเจธเจพเจฐ: apache token json two factor auth.
JSON เจตเฉเฉฑเจฌ เจเฉเจเจจเจพเจ 'เจคเฉ เจเจงเจพเจฐเจฟเจค เจเฉเจเจจเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ เจเจฒเจพเจเฉฐเจ เจชเฉเจฐเจฎเจพเจฃเฉเจเจฐเจจ เจ เจชเจพเจเฉ เจฆเฉ-เจซเฉเจเจเจฐ (2FA) เจชเฉเจฐเจฎเจพเจฃเจฟเจเจคเจพ เจ เจชเจพเจเฉ เจตเจฟเฉฑเจ เจฆเฉ-เจซเฉเจเจเจฐ เจชเฉเจฐเจฎเจพเจฃเจฟเจเจคเจพ เจเจฟเจตเฉเจ เจธเจผเจพเจฎเจฒ เจเจฐเฉเจ เจเฉฑเจ เจธเจงเจพเจฐเจจ เจฎเฉเจกเฉเจเจฒ เจธเจฅเจพเจชเจจเจพ เจจเจพเจฒ เจเจชเจฃเฉ เจ เจชเจพเจเฉ เจเจฆเจพเจนเจฐเจจ เจฒเจ เจฆเฉ-เจเจพเจฐเจ เจชเฉเจฐเจฎเจพเจฃเจฟเจเจคเจพ เจฒเจฟเจเจ
เจนเจพเจ, เจเฉฑเจฅเฉ เจคเจฟเจเจฐ เจฎเฉเจกเฉเจเจฒ เจนเจจ, เจชเจฐ เจเจน เจธเจพเจฐเฉ เจเจพเจธ เจเจฟเจฐเจฟเจเจตเจพเจ เจจเจพเจฒ เจเฉเฉเฉ เจนเฉเจ เจนเจจ เจ
เจคเฉ เจธเฉเจธเจผเจจ เจธเจผเฉเจฐเฉ เจเจฐเจจ เจ
เจคเฉ เจตเจพเจงเฉ เจเฉเจเฉเจเจผ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจเจฒเจพเจคเจฎเจ เจเฉเจเจผเจพเจ เจนเจจเฅค เจญเจพเจต, เจเฉเจ เจธเจฎเฉเจ เจฒเจ เจจเจนเฉเจเฅค
เจธเจพเจจเฉเฉฐ เจเฉเจ เจเจฐเจจ เจตเจฟเฉฑเจ เจชเฉฐเจ เจเฉฐเจเฉ เจฒเฉฑเจ เจเจ, เจเจฟเจธ เจฆเจพ เจเฉเจ เจ เฉเจธ เจจเจคเฉเจเจพ เจจเจนเฉเจ เจจเจฟเจเจฒเจฟเจเฅค
5. เจ เจธเจฅเจพเจ เจธเฉเจธเจผเจจ เจเฉเจเจจเจพเจ เจจเฉเฉฐ เจชเจฐเจธเจชเจฐ เจเฉเจฐเจฟเจเจตเจพเจ เจฆเฉ เจขเจพเจเจเฉ เจจเฉเฉฐ เจคเจฐเจ เจจเจพเจฒ เจกเจฟเจเจผเจพเจเจจ เจเจฐเจเฉ เจฒเจพเจเฉ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค
เจคเจฟเจเจฐ เจฎเฉเจกเฉเจเจฒ เจฌเจนเฉเจค เจเฉเฉฐเจเจฒเจฆเจพเจฐ เจนเจจ, เจเจฟเจเจเจเจฟ เจธเจพเจจเฉเฉฐ เจธเจฟเจฐเจซ เจเฉเจ เจซเฉฐเจเจธเจผเจจเจพเจ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค
เจเจน เจเจฟเจนเจพ เจเจพ เจฐเจฟเจนเจพ เจนเฉ, เจฎเจฟเจคเฉ เจฆเฉ เจจเจพเจฒ เจธเจฎเฉฑเจธเจฟเจ เจเจน เจนเฉ เจเจฟ เจ เจชเจพเจเฉ เจฆเฉ เจฌเจฟเจฒเจ-เจเจจ เจซเฉฐเจเจธเจผเจจ เจญเจตเจฟเฉฑเจ เจคเฉเจ เจเฉฑเจ เจฎเจฟเจคเฉ เจฌเจฃเจพเจเจฃ เจฆเฉ เจเจเจฟเจ เจจเจนเฉเจ เจฆเจฟเฉฐเจฆเฉ เจนเจจ, เจ เจคเฉ เจ เจชเฉเจฐเจเจฒเจฟเจคเจคเจพ เจฆเฉ เจเจพเจเจ เจเจฐเจฆเฉ เจธเจฎเฉเจ เจฌเจฟเจฒเจ-เจเจจ เจซเฉฐเจเจธเจผเจจเจพเจ เจตเจฟเฉฑเจ เจเฉเจ เจเจฃเจฟเจคเจฟเจ เจเฉเฉ/เจเจเจพเจ เจจเจนเฉเจ เจนเฉเฉฐเจฆเจพ เจนเฉเฅค
เจญเจพเจต, เจคเฉเจธเฉเจ เจเจน เจจเจนเฉเจ เจฒเจฟเจ เจธเจเจฆเฉ:
(%{env:zt-cert-date} + 30) > %{DATE}
เจคเฉเจธเฉเจ เจธเจฟเจฐเจซเจผ เจฆเฉ เจจเฉฐเจฌเจฐเจพเจ เจฆเฉ เจคเฉเจฒเจจเจพ เจเจฐ เจธเจเจฆเฉ เจนเฉเฅค
เจธเจซเจพเจฐเฉ เจธเจฎเฉฑเจธเจฟเจ เจฒเจ เจนเฉฑเจฒ เจฒเฉฑเจญเจฆเฉ เจนเฉเจ, เจฎเฉเจจเฉเฉฐ เจเฉฑเจ เจฆเจฟเจฒเจเจธเจช เจฒเฉเจ เจฎเจฟเจฒเจฟเจ:
เจเจน Nginx เจฒเจ เจฒเฉเจ เจตเจฟเฉฑเจ เจเฉเจก เจฆเฉ เจเฉฑเจ เจเจฆเจพเจนเจฐเจฃ เจฆเจพ เจตเจฐเจฃเจจ เจเจฐเจฆเจพ เจนเฉ, เจ
เจคเฉ เจเฉ เจเจฟ, เจเจฟเจตเฉเจ เจเจฟ เจเจน เจจเจฟเจเจฒเจฟเจ, เจฌเจนเฉเจค เจเจผเจฟเจเจฆเจพ เจธเฉฐเจฐเจเจจเจพ เจฆเฉ เจเจธ เจนเจฟเฉฑเจธเฉ เจฆเฉ เจคเจฐเจ เจจเฉเฉฐ เจฆเฉเจนเจฐเจพเจเจเจฆเจพ เจนเฉ เจเฉ เจ
เจธเฉเจ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจฒเจพเจเฉ เจเฉเจคเจพ เจนเฉ, เจนเฉเจธเจผเจฟเฉฐเจ เจฒเจ hmac เจธเจพเจฒเจเจฟเฉฐเจ เจตเจฟเจงเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจฆเฉ เจ
เจชเจตเจพเจฆ เจฆเฉ เจจเจพเจฒ ( เจเจน เจ
เจชเจพเจเฉ เจตเจฟเฉฑเจ เจจเจนเฉเจ เจชเจพเจเจ เจเจฟเจ เจธเฉ)เฅค
เจเจน เจธเจชเฉฑเจธเจผเจ เจนเฉ เจเจฟเจ เจเจฟ เจฒเฉเจ เจธเจชเฉฑเจธเจผเจ เจคเจฐเจ เจตเจพเจฒเฉ เจญเจพเจธเจผเจพ เจนเฉ, เจ เจคเฉ เจ เจชเจพเจเฉ เจฒเจ เจเฉเจ เจธเจงเจพเจฐเจจ เจเจฐเจจเจพ เจธเฉฐเจญเจต เจนเฉ:
Nginx เจ เจคเฉ Apache เจจเจพเจฒ เจ เฉฐเจคเจฐ เจฆเจพ เจ เจงเจฟเจเจจ เจเจฐเจจ เจคเฉเจ เจฌเจพเจ เจฆ:
เจ
เจคเฉ เจฒเฉเจ เจญเจพเจธเจผเจพ เจจเจฟเจฐเจฎเจพเจคเจพ เจคเฉเจ เจเจชเจฒเจฌเจง เจซเฉฐเจเจธเจผเจจ:
เจธเจพเจจเฉเฉฐ เจเฉฑเจ เจเฉเจเฉ เจฒเฉเจ เจซเจพเจเจฒ เจตเจฟเฉฑเจ env เจตเฉเจฐเฉเจเจฌเจฒ เจธเฉเฉฑเจ เจเจฐเจจ เจฆเจพ เจเฉฑเจ เจคเจฐเฉเจเจพ เจฒเฉฑเจญเจฟเจ เจนเฉ เจคเจพเจ เจเฉ เจฎเฉเจเฉเจฆเจพ เจจเจพเจฒ เจคเฉเจฒเจจเจพ เจเจฐเจจ เจฒเจ เจญเจตเจฟเฉฑเจ เจฆเฉ เจเฉฑเจ เจคเจพเจฐเฉเจ เจธเฉเจ เจเฉเจคเฉ เจเจพ เจธเจเฉเฅค
เจเจน เจเฉฑเจ เจธเจงเจพเจฐเจจ เจฒเฉเจ เจธเจเฉเจฐเจฟเจชเจ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเจฟเจเจพเจ เจฆเจฟเฉฐเจฆเฉ เจนเฉ:
require 'apache2'
function handler(r)
local fmt = '%Y%m%d%H%M%S'
local timeout = 3600 -- 1 hour
r.notes['zt-cert-timeout'] = timeout
r.notes['zt-cert-date-next'] = os.date(fmt,os.time()+timeout)
r.notes['zt-cert-date-halfnext'] = os.date(fmt,os.time()+ (timeout/2))
r.notes['zt-cert-date-now'] = os.date(fmt,os.time())
return apache2.OK
end
เจ เจคเฉ เจเฉเจเฉเจเจผ เจฆเฉ เจธเฉฐเจเจฟเจ เจฆเฉ เจ เจจเฉเจเฉเจฒเจจ เจ เจคเฉ เจชเฉเจฐเจพเจฃเฉ เจเฉเจเฉ (เจเฉเจเจจ) เจฆเฉ เจฎเจฟเจเจฆ เจชเฉเฉฑเจเจฃ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ เจ เฉฑเจงเจพ เจธเจฎเจพเจ เจเจเจฃ 'เจคเฉ เจเฉเจเจจ เจจเฉเฉฐ เจฌเจฆเจฒเจฃ เจฆเฉ เจจเจพเจฒ, เจเจน เจธเจญ เจเฉเจ เจเจธ เจคเจฐเฉเจนเจพเจ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉ:
SSLVerifyClient optional
#LuaScope thread
#generate event variables zt-cert-date-next
LuaHookAccessChecker /usr/local/etc/apache24/sslincludes/websocket_token.lua handler early
#ะทะฐะฟัะตัะฐะตะผ ะฑะตะท ัะตััะธัะธะบะฐัะฐ ััะพ-ัะพ ะตัั, ะบัะพะผะต webscoket
RewriteEngine on
RewriteCond %{SSL:SSL_CLIENT_VERIFY} !=SUCCESS
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule .? - [F]
#ErrorDocument 403 "You need a client side certificate issued by CAcert to access this site"
#websocket for safari without certauth
<If "%{SSL:SSL_CLIENT_VERIFY} != 'SUCCESS'">
<If "%{HTTP:Upgrade} = 'websocket'">
SetEnvIf Cookie "zt-cert=([^,;]+),([^,;]+),[^,;]+,([^,;]+)" zt-cert-sha1=$1 zt-cert-date=$2 zt-cert-uid=$3
<RequireAll>
Require expr %{sha1:salt1%{env:zt-cert-date}salt3%{env:zt-cert-uid}salt2} == %{env:zt-cert-sha1}
Require expr %{env:zt-cert-sha1} =~ /^.{40}$/
Require expr %{env:zt-cert-date} -ge %{env:zt-cert-date-now}
</RequireAll>
#ะทะฐะผะตัะฐะตะผ ะฐะฒัะพัะธะทะฐัะธั ะฟะพ ะฒะปะฐะดะตะปััั ัะตััะธัะธะบะฐัะฐ ะฝะฐ ะฐะฒัะพัะธะทะฐัะธั ะฟะพ ะฝะพะผะตัั ะฟัะพัะพะบะพะปะฐ
SSLUserName SSl_PROTOCOL
SSLOptions -FakeBasicAuth
</If>
</If>
<If "%{SSL:SSL_CLIENT_VERIFY} = 'SUCCESS'">
<If "%{HTTP:Upgrade} != 'websocket'">
SetEnvIf Cookie "zt-cert=([^,;]+),[^,;]+,([^,;]+)" HAVE_zt-cert-sha1=$1 HAVE_zt-cert-date-halfnow=$2
SetEnvIfExpr "env('HAVE_zt-cert-date-halfnow') -ge %{TIME} && env('HAVE_zt-cert-sha1')=~/.{40}/" HAVE_zt-cert-sha1-found=1
Define zt-cert "path=/;Max-Age=%{env:zt-cert-timeout};HttpOnly;Secure;SameSite=Strict"
Define dates_user "%{env:zt-cert-date-next},%{env:zt-cert-date-halfnext},%{SSL_CLIENT_S_DN_CN}"
Header set Set-Cookie "expr=zt-cert=%{sha1:salt1%{env:zt-cert-date-next}sal3%{SSL_CLIENT_S_DN_CN}salt2},${dates_user};${zt-cert}" env=!HAVE_zt-cert-sha1-found
</If>
</If>
SetEnvIfExpr "env('HAVE_zt-cert-date-halfnow') -ge %{TIME} && env('HAVE_zt-cert-sha1')=~/.{40}/" HAVE_zt-cert-sha1-found=1
ัะฐะฑะพัะฐะตั,
ะฐ ัะฐะบ ัะฐะฑะพัะฐัั ะฝะต ะฑัะดะตั
SetEnvIfExpr "env('HAVE_zt-cert-date-halfnow') -ge env('zt-cert-date-now') && env('HAVE_zt-cert-sha1')=~/.{40}/" HAVE_zt-cert-sha1-found=1
เจเจฟเจเจเจเจฟ LuaHookAccessChecker Nginx เจคเฉเจ เจเจธ เจเจพเจฃเจเจพเจฐเฉ เจฆเฉ เจเจงเจพเจฐ 'เจคเฉ เจชเจนเฉเฉฐเจ เจเจพเจเจเจพเจ เจคเฉเจ เจฌเจพเจ เจฆ เจนเฉ เจเจฟเจฐเจฟเจเจธเจผเฉเจฒ เจนเฉเจตเฉเจเจพเฅค
เจธเจฐเฉเจค เจจเจพเจฒ เจฒเจฟเฉฐเจ
เจเจ เจนเฉเจฐ เจเฉเจเจผ.
เจเจฎ เจคเฉเจฐ 'เจคเฉ, เจเจน เจฎเจพเจเจจเฉ เจจเจนเฉเจ เจฐเฉฑเจเจฆเจพ เจเจฟ เจ เจชเจพเจเฉ (เจธเจผเจพเจเจฆ Nginx เจตเฉ) เจธเฉฐเจฐเจเจจเจพ เจตเจฟเฉฑเจ เจจเจฟเจฐเจฆเฉเจธเจผ เจเจฟเจธ เจเฉเจฐเจฎ เจตเจฟเฉฑเจ เจฒเจฟเจเฉ เจเจ เจนเจจ, เจเจฟเจเจเจเจฟ เจ เฉฐเจค เจตเจฟเฉฑเจ เจนเจฐ เจเฉเจเจผ เจจเฉเฉฐ เจเจชเจญเฉเจเจคเจพ เจฆเฉเจเจฐเจพ เจฌเฉเจจเจคเฉ เจฆเฉ เจเฉเจฐเจฎ เจฆเฉ เจ เจงเจพเจฐ เจคเฉ เจเฉเจฐเจฎเจฌเฉฑเจง เจเฉเจคเจพ เจเจพเจตเฉเจเจพ, เจเฉ เจเจฟ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจฒเจ เจฏเฉเจเจจเจพ เจจเจพเจฒ เจฎเฉเจฒ เจเจพเจเจฆเจพ เจนเฉ. เจฒเฉเจ เจธเจเฉเจฐเจฟเจชเจเจพเจ.
เจธเฉฐเจชเฉเจฐเจจเจคเจพ:
เจฒเจพเจเฉ เจเจฐเจจ เจคเฉเจ เจฌเจพเจ
เจฆ เจฆเจฟเจเจพเจ เจฆเฉเจฃ เจตเจพเจฒเฉ เจธเจฅเจฟเจคเฉ (เจเฉเจเจพ):
เจธเฉเจตเจพเจตเจพเจ เจ
เจคเฉ เจฌเฉเจจเจฟเจเจฆเฉ เจขเจพเจเจเฉ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ IOS 'เจคเฉ เจฎเฉเจฌเจพเจเจฒ เจซเจผเฉเจจ เจคเฉเจ เจฌเจฟเจจเจพเจ เจตเจพเจงเฉ เจชเฉเจฐเฉเจเจฐเจพเจฎเจพเจ (VPN), เจฏเฉเจจเฉเจซเจพเจเจก เจ
เจคเฉ เจธเฉเจฐเฉฑเจเจฟเจ
เจค เจเจชเจฒเจฌเจง เจนเฉเฅค
เจเฉเจเจพ เจชเฉเจฐเจพเจชเจค เจเฉเจคเจพ เจเจฟเจ เจนเฉ, เจตเฉเจฌ เจธเจพเจเจ เจเฉฐเจฎ เจเจฐเจฆเฉ เจนเจจ เจ เจคเฉ เจธเฉเจฐเฉฑเจเจฟเจ เจฆเจพ เจชเฉฑเจงเจฐ เจเฉฑเจ เจธเจฐเจเฉเจซเจฟเจเฉเจ เจคเฉเจ เจเฉฑเจ เจจเจนเฉเจ เจนเฉเฉฐเจฆเจพ เจนเฉเฅค
เจธเจฐเฉเจค: www.habr.com