рд╣рд░реЛрдХреВ рдореЗрдВ рдЧреНрд░рд╛рд╣рдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХрд╛ рдкреНрд░рдмрдВрдзрди

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ JavaрдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╣рд░реЛрдХреВ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рд╣реЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдПрдХ HTTP рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рдкреНрд░рд╛рд╡рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЧреНрд░рд╛рд╣рдХ рдХреАрд╕реНрдЯреЛрд░реНрд╕ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рдореБрджреНрджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рдВрдмреЛрдзрд┐рдд рдХрд░реЗрдВрдЧреЗ ред


  • рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рдЕрдиреНрдп рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рдХреЛ рдЪрд╛рд▓реВ рд░рдЦрдирд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдо рдмрд╛рдд рд╣реИ ред

рдЖрдорддреМрд░ рдкрд░ рдкрд╛рд╕рд╡рд░реНрдб-рд╕рдВрд░рдХреНрд╖рд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдирд┐рд╣рд┐рдд - рдХреБрдВрдЬреА рдХрдВрдЯреЗрдирд░, рдЬреИрд╕реЗ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ .p12рдпрд╛ jksред


рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдЬреИрд╕реЗ рд╣реА рдПрдХ рд╕рдорд╛рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ :


  • рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд▓реЛрдЧреЛрдВ рдХреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


  • рд╡рд╣реА рдбреЙрдХрд░ рдЫрд╡рд┐рдпреЛрдВ рдФрд░ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд╕рдорд╛рди рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред


  • рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ Java!



рд╕реБрд░рдХреНрд╖рд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:


  1. рд╕реБрд░рдХреНрд╖рд╛ рдЕрдзрд┐рдХрд╛рд░реА (OB) рдПрдиреНрдХреЛрдбреЗрдб рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИBase64
  2. рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рд░реЛрдХреВ рдбреИрд╢рдмреЛрд░реНрдб)
  3. рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдЖрдпрд╛рдд рдПрдХ рдПрдиреНрдХреЛрдб рд╕реНрдЯреНрд░рд┐рдВрдЧ Base64рдореЗрдВ
  4. рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ, рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдбреЗрдЯрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рднреМрддрд┐рдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ
  5. рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

  • рдЕрдм, рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рд▓реЛрдЧреЛрдВ рдХреЗ рдХреЗрд╡рд▓ рдПрдХ рдЪрдХреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ ред

рдЖрдЗрдП рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд▓рд╛рдПрдБ:


  • рдЬреБрдмрд╛рди: Java
  • рдордВрдЪ: Heroku
  • рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА: Gradle
  • рдореБрдЦреНрдп рд╕рдВрдЧреНрд░рд╣рдг рдкреНрд░рд╛рд░реВрдк: PKCS12

.P12 рдлрд╝рд╛рдЗрд▓ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ


рдЕрдкрдиреЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:



рд╣рд░реЛрдХреВ рдХреЛ рдЖрдпрд╛рдд


  • рдХреЗ рд▓рд┐рдП рдЬрд╛рдУ Heroku
  • SettingsрдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдЕрдиреБрднрд╛рдЧ рдкрд░ рдЬрд╛рдПрдВ
  • "Reveal the config vars"
  • :
    • keyStoreFileName тАФ , "private_key.p12"
    • keyStoreBase64 тАФ Base64, " .p12"
    • keyStorePassword тАФ , .p12
    • keyStoreType тАФ pkcs12
    • trustStoreType тАФ jks

.p12 Gradle


guild.gradle stage:


task initKeyStore() {
    doLast {
        println("Creating keystore file from environment variables.")
        String keyStoreFileName = System.getenv("keyStoreFileName")
        if (keyStoreFileName != null) {
            String keyStoreBase64 = System.getenv("keyStoreBase64")
            new File(keyStoreFileName).withOutputStream {
                it.write(Base64.decoder.decode(keyStoreBase64))
            }
        }
    }
}
stage.dependsOn(initKeyStore)

"procfile" Heroku


"procfile" Heroku .


, shell тАФ runApp.sh.


runApp.sh:


java \
 -Dserver.port=$PORT \
...
 -Djavax.net.ssl.keyStoreType=$keyStoreType \
 -Djavax.net.ssl.trustStoreType=$trustStoreType \
 -Djavax.net.ssl.keyStore=$keyStoreFileName \
 -Djavax.net.ssl.keyStorePassword=$keyStorePassword \
 $JAVA_OPTS \
...

git (push) (commit):


git update-index --chmod=+x runApp.sh
git commit -m '    runApp.sh'
git push origin master


Heroku 32 .


, .



  • , Heroku, Gradle P12 .
  • , procfile, Heroku .
  • , .p12 Java
  • .

!


All Articles