рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЛ рдЬрдХреЛрдм рдЬреЗрдирдХреЛрд╡ рджреНрд╡рд╛рд░рд╛ рдЕрдВрддрд┐рдо рд▓реЗрдЦ "рдЬрд╛рд╡рд╛ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ" рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╢реБрд░реБрдЖрддреА рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛:
- рдЬрд╛рд╡рд╛ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА
- рдЬрд╛рд╡рд╛ рд╕рд┐рдлрд░
- MessageDigest
- рдореИрдХ
- рд╣рд╕реНрддрд╛рдХреНрд╖рд░
- keypair
- Keygenerator
- KeyPairGenerator
- KeyStore
- keytool
- рдкреНрд░рдорд╛рдгрдкрддреНрд░
- CertificateFactory
- CertPath
рдЬрд╛рд╡рд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░
рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╡рд░реНрдЧ ( java.security.cert.Certificate ) рдПрдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рд╣реИ рдЬреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЗрдХрд╛рдИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИред рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╡рд░реНрдЧ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЙрд╕ рд╡рд╕реНрддреБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╛рдо рдФрд░ рдЕрдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕реЗ рд╡рд╣ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА, рд╕рдВрднрд╡рддрдГ, рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рд╛рдзрд┐рдХрд╛рд░реА (CA) рд╕реЗ рдПрдХ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ред Certificate
рд╡рд░реНрдЧ рдПрдХ рд╕рд╛рд░ рд╡рд░реНрдЧ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдЖрдк Certificate
рдХреЛ рдЪрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдкрдХрд╛ рдЪрд░ рд╣рдореЗрд╢рд╛ рдПрдХ рдЙрдкрд╡рд░реНрдЧ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ред рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрдкрд╡рд░реНрдЧ рд╣реИ- X509Certificate
рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ, рдЬреЛ X.509 рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ HTTPS рдФрд░ TLS рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рдПрдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдХ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЛрдВ рд╕реЗ рдПрдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЗрди рджреЛ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рджреЗрдЦреЗрдВред
getEncoded ()
рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ getEncoded()
рд╡рд┐рдзрд┐ рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдПрдиреНрдХреЛрдбреЗрдб рд╕рдВрд╕реНрдХрд░рдг рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдПрдХ X509 рдкреНрд░рдорд╛рдг рдкрддреНрд░ рд╣реИ, рддреЛ рд▓реМрдЯреЗ рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдореЗрдВ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЙрджрд╛рд╣рд░рдг (ASN.1 DER) рдХрд╛ X.590 рдПрдиреНрдХреЛрдбреЗрдб рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдЧрд╛ред рдпрд╣рд╛рдБ getEncoded()
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
byte[] encodedCertificate = certificate.getEncoded();
getPublicKey ()
getPublicKey()
рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╡рд┐рдзрд┐ рдЗрд╕ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЙрджрд╛рд╣рд░рдг рдХреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рджреЗрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг getPublicKey()
рд╡рд┐рдзрд┐ рд╣реИ:
PublicKey certificatePublicKey = certificate.getPublicKey();
getType ()
getType()
рд╡рд┐рдзрд┐ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкреНрд░рдХрд╛рд░ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг getType()
:
String certificateType = certificate.getType();
рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ ()
рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╡рд░реНрдЧ рдореЗрдВ рддреАрди verify()
рд╡рд┐рдзрд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХреЗ рдЕрдиреБрд░реВрдк рдирд┐рдЬреА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╣реИред рдпрд╣рд╛рдБ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕рддреНрдпрд╛рдкрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
verify()
рд╡рд┐рдзрд┐ рдПрдХ рдорд╛рди рдирд╣реАрдВ рд▓реМрдЯрд╛рддреА рд╣реИред рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ InvalidKeyException
рдХреЛ InvalidKeyException
рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдлреЗрдВрдХрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЬрд╛рд╡рд╛ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ (рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдлреИрдХреНрдЯреНрд░реА)
CertificateFactory
рдХреНрд▓рд╛рд╕ ( java.security.cert.CertificateFactory ) рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рд╕реЗ X.509-рдПрдирдХреЛрдбреЗрдб рд╕рд░реНрдЯрд┐рдлрд╝рд┐рдХреЗрдЯ (ASN.1 DER) рдХреЗ рд▓рд┐рдП рд╕рд░реНрдЯрд┐рдлрд╝рд┐рдХреЗрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕реЗрд╕ ( Certificate
) рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред CertificateFactory
рднреА рдмрди рд╕рдХрддреЗ рд╣реИрдВред CertPath
рдПрдХ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдЪреЗрди рд╣реИ, рдЬрд╣рд╛рдВ рдЗрд╕ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдкрд░ рдЕрдЧрд▓реЗ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реЛрддреЗ рд╣реИрдВред
рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛
Certificate
рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдПрдХ CertificateFactory
рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдПрдХ рдЙрджрд╛рд╣рд░рдг:
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
рдпрд╣ рдЙрджрд╛рд╣рд░рдг CertificateFactory
рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ X.509 рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ ( X509Certificate
Certificate
рдСрдл Certificate
) рдХреЛ рддреБрд░рдВрдд рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред
рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдмрдирд╛рдПрдВ
CertificateFactory
рдХреА рдПрдХ рдЖрд╡реГрддреНрддрд┐ рдмрдирд╛рдХрд░, рдЖрдк Certificate
рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ generateCertificate()
рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред generateCertificate()
рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
InputStream certificateInputStream = new FileInputStream("my-x509-certificate.crt"); Certificate certificate = certificateFactory.generateCertificate(certificateInputStream);
CertPath рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛
CertificateFactory
рднреА CertificateFactory
рдХреЛ рддреБрд░рдВрдд CertPath
рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдПрдХ CertPath
рдЙрджрд╛рд╣рд░рдг CertPath
generateCertPath()
рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
InputStream certificateInputStream = new FileInputStream("my-x509-certificate-chain.crt"); CertPath certPath = certificateFactory.generateCertPath(certificateInputStream);
рдЬрд╛рд╡рд╛ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ (рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдЪреЗрди)
CertPath
рд╡рд░реНрдЧ ( java.security.cert.CertPath ) рдкреНрд░рдорд╛рдг рдкрддреНрд░ ( Certificate
рдСрдмреНрдЬреЗрдХреНрдЯ) рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЕрдЧрд▓реЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдПрдХ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рдХрд░реНрддрд╛ рд╣реИред рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдЕрдереЙрд░рд┐рдЯреА (CA) рдХреЗ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдХреЗ рд╕рд╛рде рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдорддреМрд░ рдкрд░ CertPath
рдХреНрд▓рд╛рд╕ CertPath
рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
CertPath рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реЛ рд░рд╣реА рд╣реИ
рдЖрдорддреМрд░ рдкрд░, рдПрдХ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдлреИрдХреНрдЯреНрд░реА ( CertificateFactory CertPathBuilder
) рд╕реЗ рдПрдХ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЧреЗрдЯ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ ()
рдПрдХ рдмрд╛рд░ рдЖрдкрдХреЛ Certificate
рдорд┐рд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк Certificate
рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ Certificate
рдореЗрдВ getCertificates()
рд╡рд┐рдзрд┐ рд╕реЗ рд╣реЛрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рд╕реЗ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
List<Certificate> certificates = certPath.getCertificates();
getType ()
getType()
рд╡рд┐рдзрд┐ рдпрд╣ CertPath
рд╣реИ рдХрд┐ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, X.509) рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рдпрд╣ CertPath
рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдпрд╣рд╛рдБ getType()
рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ CertPath
рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
String type = certPath.getType();