如果您想了解有没有办法在Groovy中使用JKSKeystore或Truststore为HTTP调用实现SSL?的知识,那么本篇文章将是您的不二之选。同时我们将深入剖析AndroidEclipseke
如果您想了解有没有办法在 Groovy 中使用 JKS Keystore 或 Truststore 为 HTTP 调用实现 SSL?的知识,那么本篇文章将是您的不二之选。同时我们将深入剖析Android Eclipse keystore.jks文件生成,根据keystore密钥获取SHA1安全码 ,apk打包、Android Studio apk打包,keystore.jks文件生成,根据keystore密钥获取SHA1安全码、Android studio 签名文件.jks 转 .keystore、Android Studio 默认keystore 以及自定义keystore的各个方面,并给出实际的案例分析,希望能帮助到您!
本文目录一览:- 有没有办法在 Groovy 中使用 JKS Keystore 或 Truststore 为 HTTP 调用实现 SSL?
- Android Eclipse keystore.jks文件生成,根据keystore密钥获取SHA1安全码 ,apk打包
- Android Studio apk打包,keystore.jks文件生成,根据keystore密钥获取SHA1安全码
- Android studio 签名文件.jks 转 .keystore
- Android Studio 默认keystore 以及自定义keystore
有没有办法在 Groovy 中使用 JKS Keystore 或 Truststore 为 HTTP 调用实现 SSL?
如何解决有没有办法在 Groovy 中使用 JKS Keystore 或 Truststore 为 HTTP 调用实现 SSL??
我编写了一个通过 Nifi 的 ExecuteGroovyScript 处理器运行的 groovy 脚本。它运行良好。但是,我想知道是否有办法使用 SSL 来实现这一点?
我的 unix 服务器上有 JKS Keystore 和 Truststore JKS 文件。
下面是我写的代码:
def flowFile = session.get()
def postResult=''''
def url = new URL("https://xxx.xxx.xxx/sample?key=8B4B4565-313E-462D-8160-175F6F456773")
HttpURLConnection connection = (HttpURLConnection) url.openConnection()
connection.setRequestMethod("GET")
// connection.setConnectTimeout(10000)
connection.connect()
if (connection.responseCode == 200 || connection.responseCode == 201) {
flowFile = session.putAttribute(flowFile,''api_responce_code'',connection.responseCode.toString())
flowFile = session.write(flowFile,{outputStream -> outputStream.write(connection.content.getBytes())} as OutputStreamCallback)
session.transfer(flowFile,REL_SUCCESS)
} else {
flowFile = session.putAttribute(flowFile,connection.responseCode.toString())
flowFile = session.putAttribute(flowFile,''api_responce_error'',connection.getErrorStream().toString())
session.transfer(flowFile,REL_FAILURE)
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
Android Eclipse keystore.jks文件生成,根据keystore密钥获取SHA1安全码 ,apk打包
keystore.jks文件生成,打包APK
选中项目右键-> Android Tools->Export Signed Application Package ,如图:
之后
点击Next,下图 (建议文件名后缀为.keystore)
进入到”Key Creation“界面,完成信息,点击Next
完成信息,(选择APK生成的路径)
可以到保存路径下看生成的android.keystore文件了
接下来APK打包
点击之后,选择保存路径:
之后APK生成成功
根据keystore密钥获取SHA1安全码
通常做项目大多数都要用到SHA1安全码,比如:地图,获取SHA1安全码的也有两种,分为调试版和发布版,他们的SHA1都是不一样的,
debug测试版:
Window+R 打开控制台 输入cmd点击确定
之后在弹框中完成以下操作就可以看到SHA1安全码了
上图的密钥库口令默认的是:android (注:输入口令是看不见的,输入完成Enter即可)
发布版(这个版本可以看到测试版和发布版的SHA1):
这个版本就需要我们前面生成的keystore文件了, Custom debug keystore:导入生成的keystore文件,点击Apply生成发布版本的密钥SHA1
Android Studio apk打包,keystore.jks文件生成,根据keystore密钥获取SHA1安全码
keystore.jks文件生成,打包APK
选择Build > Generate Signed APK 出现如下弹框:
然后点击Create new...(创建的意思)出现另一个弹框,在做如下操作,如图
完成上信息后,点击OK
可看到前面填写的一些信息,可以勾选记住密码,点击Next
之后
之后在点击Finish ,等一小会儿Apk就打包成功了,上图APK Folder是Apk路径,默认是项目根目录。
根据keystore密钥获取SHA1安全码
通常做项目大多数都要用到SHA1安全码,比如:地图,获取SHA1安全码的也有两种,分为调试版和发布版,他们的SHA1都是不一样的,
debug测试版:
Window+R 打开控制台 输入cmd点击确定
之后在弹框中完成以下操作就可以看到SHA1安全码了
上图的密钥库口令默认的是:android (注:输入口令是看不见的,输入完成Enter即可)
release发布版:
这个版本就需要我们前面生成的keystore.jks文件了,首先找到keystore.jks的目录,然后在AS打包的项目中,点击底部控制台 Terminal
出现了操作台,填写相应信息即可,如图:
上图的密钥库口令是你创建keystore.jks文件时输入的密码, (注:输入口令是看不见的,输入完成Enter即可)
Android studio 签名文件.jks 转 .keystore
win+R,输入cmd,打开命令窗口:
然后在命令窗口先输入:
keytool -importkeystore -srckeystore D:\key.jks -srcstoretype JKS -deststoretype PKCS12 -destkeystore key.p12
这里面的“key.jks”就是你原来的签名文件,key.p12是临时文件,用来过渡到keystore的一个文件,不用管。
接着会让你输入三遍密码,每次输完都回车,输入界面不会显示你输入的密码,不用管,输完直接回车就好;
三次密码输完后,会生成一个key.p12文件,继续执行下一步操作;
在命令窗口先输入:
keytool -v -importkeystore -srckeystore D:\key.p12 -srcstoretype PKCS12 -destkeystore D:\key.keystore -deststoretype JKS
接着会让你输入三遍密码,每次输完都回车,输入界面不会显示你输入的密码不用管,输完直接回车就好;
三次密码输完后,会生成一个key.keystore文件,这个就是转换成功的文件,可以拿去使用了。
Android Studio 默认keystore 以及自定义keystore
我们使用Android Studio 运行或测试我们的app 它使用一个默认的debug.keystore进行签名。
这个默认签名(keystore)是不需要密码的,它的默认位置在 $HOME/.android/debug.keystore,如果不存在Android studio会自动创建它。
例如我的debug.keystore就在C:\Users\Administrator\.android\debug.keystore。再我们正式发布项目的时候是不能使用debug.keystore的。
官方地址: https://developer.android.com/studio/publish/app-signing.html
下面我们来介绍如何使用Android Studio创建一个新的keystore,并发布我们的apk
第一步: Build --->> Generate Signed APK
第二步:Create New
第三步:填写相关信息,里面内容什么含义自行Google
第四步:输入密码
第五步:选择发布app的路径默认即可 选择release方式发布
OK,发布成功,可以到文件夹下面找到发布的apk
下面我们来配置如何在debug的时候使用我们自定义的keystore。
第一步:还是要新建一个keystore,就用上面的也可以。
第二步:在项目上右键 Open Module Settings.然后看图就可以了,选择路径,把密码填上,该填的都填好。
第三步:分别选择debug和release 都设置为刚才填进去的keystore。
点击OK即可,然后查看APP的配置文件应该是这样的。
android {
signingConfigs {
android_studio_app {
keyAlias 'androidstudioapp'
keyPassword 'mypassword'
storeFile file('D:/Android/keystore/android_studio_app.jks')
storePassword 'mypassword'
}
}
compileSdkVersion 23
buildToolsversion "23.0.1"
defaultConfig {
applicationId "com.example.administrator.myapplication"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
signingConfig signingConfigs.android_studio_app
}
debug {
signingConfig signingConfigs.android_studio_app
}
}
}
下面讲解如何测试apk是否使用了我们创建的keystore
第一步: keytool -list -v -keystore xxx.keystore
通过工具查看sha1的值.,例如 5C:93:68:2C:E3:2B:00:F1:D6:11:0F:46:08:93:32:1D:FD:6E:60:CC
第二步:在APP内部通过代码的方式获取当前应用打包后的sha1 两者一比较即可。就可以知道当前的应用是否是用的这个keystore进行打包的 (MD5值同理比较,同样的代码不同的签名文件,会导致有不同的sha1 跟 MD5值,但是不同的包名不会导致此情况)
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateEncodingException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
//这个是获取SHA1的方法
public static String getCertificateSHA1Fingerprint(Context context) {
//获取包管理器
PackageManager pm = context.getPackageManager();
//获取当前要获取SHA1值的包名,也可以用其他的包名,但需要注意,
//在用其他包名的前提是,此方法传递的参数Context应该是对应包的上下文。
String packageName = context.getPackageName();
//返回包括在包中的签名信息
int flags = PackageManager.GET_SIGNATURES;
PackageInfo packageInfo = null;
try {
//获得包的所有内容信息类
packageInfo = pm.getPackageInfo(packageName,flags);
} catch (PackageManager.NameNotFoundException e) {
e.printstacktrace();
}
//签名信息
Signature[] signatures = packageInfo.signatures;
byte[] cert = signatures[0].toByteArray();
//将签名转换为字节数组流
InputStream input = new ByteArrayInputStream(cert);
//证书工厂类,这个类实现了出厂合格证算法的功能
CertificateFactory cf = null;
try {
cf = CertificateFactory.getInstance("X509");
} catch (Exception e) {
e.printstacktrace();
}
//X509证书,X.509是一种非常通用的证书格式
X509Certificate c = null;
try {
c = (X509Certificate) cf.generateCertificate(input);
} catch (Exception e) {
e.printstacktrace();
}
String hexString = null;
try {
//加密算法的类,这里的参数可以使MD4,MD5等加密算法
MessageDigest md = MessageDigest.getInstance("SHA1");
//获得公钥
byte[] publicKey = md.digest(c.getEncoded());
//字节到十六进制的格式转换
hexString = byte2HexFormatted(publicKey);
} catch (NoSuchAlgorithmException e1) {
e1.printstacktrace();
} catch (CertificateEncodingException e) {
e.printstacktrace();
}
return hexString;
}
//这里是将获取到得编码进行16进制转换
private static String byte2HexFormatted(byte[] arr) {
StringBuilder str = new StringBuilder(arr.length * 2);
for (int i = 0; i < arr.length; i++) {
String h = Integer.toHexString(arr[i]);
int l = h.length();
if (l == 1)
h = "0" + h;
if (l > 2)
h = h.substring(l - 2,l);
str.append(h.toupperCase());
if (i < (arr.length - 1))
str.append(':');
}
return str.toString();
}
我们今天的关于有没有办法在 Groovy 中使用 JKS Keystore 或 Truststore 为 HTTP 调用实现 SSL?的分享已经告一段落,感谢您的关注,如果您想了解更多关于Android Eclipse keystore.jks文件生成,根据keystore密钥获取SHA1安全码 ,apk打包、Android Studio apk打包,keystore.jks文件生成,根据keystore密钥获取SHA1安全码、Android studio 签名文件.jks 转 .keystore、Android Studio 默认keystore 以及自定义keystore的相关信息,请在本站查询。
本文标签: