Misalkan Javaaplikasi kita di -host di platform Heroku dan perlu terhubung ke server HTTP yang memerlukan penyediaan Sertifikat Klien.
Dalam artikel ini, kami akan membahas masalah menyimpan keystores klien dengan aman 
- Menyimpan kata sandi dan data sensitif lainnya 
Biasanya .p12atau jkspada sistem file.
Tetapi masalahnya menjadi jelas segera setelah itu perlu untuk menempatkan aplikasi serupa di 
- Bahkan kata sandi yang dilindungi  
 
- Hal yang sama berlaku untuk gambar Docker dan artefak serupa lainnya yang tersedia untuk beberapa orang. 
 
- Untungnya, ini mudah diperbaiki di aplikasi - Java!
 
 
Pertimbangkan proses yang diusulkan dalam hal teori keselamatan:
- Petugas Keamanan (OB) mengekspor Base64
- .. - .. Base64- , 
:
- : Java
- : Heroku
- : Gradle
- : PKCS12
.p12
, , :
Heroku
- 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,GradleP12- , procfile,Heroku.
- .p12- Java
- .
!