将.pem证书合并到truststore / keystore.jsk

我有一个组合的.pem文件,如下所示:

public class Phrases {
    public Context context;
    public static String[] categories = {"feeling","home","work","medical","food","activity","common","emergency"};
    private static Phrases phrases = null;
    public Map<String,String[]> allPhrases = new HashMap<>();

    private Phrases() {
    }

    public static Phrases getPhrases() {
        if(phrases == null) {
            phrases = new Phrases();
        }
        return phrases;
    }

    public void fetchAllPhrases(Context context) {
        this.context = context;
        Resources res = context.getResources();
        allPhrases.put(categories[0],res.getStringArray(R.array.feeling));
        allPhrases.put(categories[1],res.getStringArray(R.array.home));
        allPhrases.put(categories[2],res.getStringArray(R.array.work));
        allPhrases.put(categories[3],res.getStringArray(R.array.medical));
        allPhrases.put(categories[4],res.getStringArray(R.array.food));
        allPhrases.put(categories[5],res.getStringArray(R.array.activity));
        allPhrases.put(categories[6],res.getStringArray(R.array.common));
        allPhrases.put(categories[7],res.getStringArray(R.array.emergency));
//        Log.v("PHRASES",Arrays.toString(allPhrases.toString()));
    }

    public Map<String,String[]> getallPhrases() {
        return allPhrases;
    }
}

我认为这是ssl,key和ca的组合。我需要将其转换为truststore.jks和keystore.jks以用于我的服务。

public class CustomFragment extends Fragment {
    private ArrayAdapter<String> adapter;
    private ListView listView;
    private FloatingactionButton addPhraseButton;
    private TextView phraseTitleTextView;
    private TextToSpeech textToSpeech;
    private String[] phrases;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_custom,container,false);
        //receive intent
        String categories = getarguments().getString("categories");

        Phrases phrasesObj = Phrases.getPhrases();
        phrasesObj.fetchAllPhrases(view.getcontext());
        phrases = phrasesObj.getallPhrases().get(categories);

        phraseTitleTextView = view.findViewById(R.id.label_phrases_txtview);
        addPhraseButton = view.findViewById(R.id.add_phrases_btn);
        // setting local for text to speech
        textToSpeech = new TextToSpeech(getactivity().getapplicationContext(),new TextToSpeech.OnInitListener() {
            @Override
            public void onInit(int status) {
                textToSpeech.setLanguage(Locale.US);
            }
        });

        //setting adapter and listview
        adapter = new ArrayAdapter<String>(getcontext(),R.layout.entry_item,R.id.phrase_textview,phrases);
        listView = (ListView) view.findViewById(R.id.phrases_list);
        listView.setadapter(adapter);
        listView.setItemsCanFocus(true);

        listView.setOnItemClicklistener(new AdapterView.OnItemClicklistener() {
            @Override
            public void onItemClick(AdapterView<?> paren,View view,int position,long id) {
                String text = phrases[position];
                Toast.makeText(getcontext(),text,Toast.LENGTH_LONG).show();
                textToSpeech.speak(text,TextToSpeech.QUEUE_FLUSH,null,null);
            }
        });
        return view;
    }
}

但是抛出:

-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

如果我尝试也发生以下情况:

openssl pkcs12 -export -out cert.pkcs12 -in cert
keytool -importcert -v -trustcacerts -alias eb-srv -file cert.pkcs12 -keystore truststore.jks
hitzhaotianxu 回答:将.pem证书合并到truststore / keystore.jsk

您拥有的第一个命令(openssl)将为您创建PKCS12格式的密钥库。但是,对于信任库,您需要在链中分别添加每个证书。

当您具有以下格式的证书链时,通常位于此层次结构中。

-----BEGIN CERTIFICATE-----
User
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Sub CA/CA
-----END CERTIFICATE-----
...

您应该添加到信任库中的是CA和Sub CA证书。因此,您需要将这些证书分成不同的文件,并为每个证书运行此命令。请注意,您不需要为用户证书执行此操作。

  

keytool -importcert -keystore truststore.jks -storepass [密码]-文件[certificate_file]

第一个命令将以PKCS12格式创建密钥库。如果您需要其他格式,例如jks,则可以运行以下命令:

  

keytool -importkeystore -srckeystore [pkcs12_keystore] -srcstorepass [pkcs12_password] -srcstoretype pkcs12 -destkeystore [jks_keystore_file] -deststorepass [jks_keystore_password] -deststoretype jks

本文链接:https://www.f2er.com/2976657.html

大家都在问