Skip to content

test: add script to create 0-dns-cert.pem - #11579

Closed
shigeki wants to merge 3 commits into
nodejs:masterfrom
shigeki:create_0-dns_cert
Closed

test: add script to create 0-dns-cert.pem#11579
shigeki wants to merge 3 commits into
nodejs:masterfrom
shigeki:create_0-dns_cert

Conversation

@shigeki

@shigekishigeki commented Feb 27, 2017

Copy link
Copy Markdown
Contributor

0-dns-cert.pem and 0-dns-key.pem were stored in test/fixtures/key
directory, but the cert file cannot be created with the openssl
command via Makefile. make clean removes them but we could not re-create them.

This added a script to create it with using asn1.js and
asn1.js-rfc5280 and moved them out of key directory and put into
test/fixtures/0-dns.

The domains listed in the cert were also changed into example.com and
example.org to show the use for only testing.

Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • tests and/or benchmarks are included
  • commit message follows commit guidelines
Affected core subsystem(s)

test, tls

R: @indutny

0-dns-cert.pem and 0-dns-key.pem were stored in `test/fixtures/key`
directory, but the cert file cannot be created with the openssl
command via Makefile.
Added a script to create it with using `asn1.js` and
`asn1.js-rfc5280` and moved them out of key directory and put into
`test/fixtures/0-dns`.
The domains listed in the cert were also changed into example.com and
example.org to show the use for only testing.
@nodejs-github-botnodejs-github-bot added the test Issues and PRs related to the tests. label Feb 27, 2017
@shigekishigeki added the tls Issues and PRs related to the tls subsystem. label Feb 27, 2017
@shigeki

Copy link
Copy Markdown
ContributorAuthor

@shigeki

Copy link
Copy Markdown
ContributorAuthor

To be the fix of #10228.

@shigeki

Copy link
Copy Markdown
ContributorAuthor

The ci jobs was somehow removed.
A new job is https://ci.nodejs.org/job/node-test-pull-request/6623/ and all is green.

Comment threadtest/fixtures/0-dns/README.md Outdated

$ node ./createCert.js
$ openssl x509 -text -in 0-dns-cert.pem
(You can not see evel.example.com in subjectAltName field)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"evil"?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

Comment threadtest/fixtures/0-dns/createCert.js Outdated

const private_key = fs.readFileSync('./0-dns-key.pem');
// public key file can be generated from the private key with
// openssl rsa -in 0-dns-key.pem -RSAPublicKey_out -outform der \

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you can wrap to 80 columns, and the backslash isn't necessary at end of line

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

Comment threadtest/fixtures/0-dns/createCert.js Outdated
const crypto = require('crypto');
const rfc5280 = require('asn1.js-rfc5280');
const asn1 = require('asn1.js');
const BN = asn1.bignum;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sort requires

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

Comment threadtest/fixtures/0-dns/createCert.js Outdated
@@ -0,0 +1,75 @@
'use strict';

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

js files would be named create-cert.js

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

Comment threadtest/fixtures/0-dns/createCert.js Outdated
const asn1 = require('asn1.js');
const BN = asn1.bignum;

const id_at_commonName = [ 2, 5, 4, 3 ];

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

inconsistent casing, sometimes snake_case, sometimes camelCase, it looks like test/fixtures doesn't get linted

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

id_at_commonName is named after the ASN.1 notation in RFC5280 which would come from OID name.

Comment threadtest/fixtures/0-dns/createCert.js Outdated
const subject = PrintStr.encode('evil.example.com', 'der');

const tbs =
{ version: 'v3',

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this isn't generally how node indents object literals

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

Comment threadtest/fixtures/0-dns/createCert.js Outdated

const cert = {
tbsCertificate: tbs,
signatureAlgorithm: { algorithm: sha256WithRSAEncryption, parameters: null_},

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lacking before closing } here and a couple lines onwards

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

const common = require('../common');
const assert = require('assert');

// check getPeerCertificate can properly handle '\0' for fix CVE-2009-2408

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good to have a test description, it should be a capitalized and period terminated sentence.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

@sam-github

Copy link
Copy Markdown
Contributor

Nice use of asn1 to craft the cert. I think the js code should follow the same coding conventions we use elswhere, even though test/fixtures seems to be exempted from linting at the moment.

@shigeki

Copy link
Copy Markdown
ContributorAuthor

I made eslint for test/fixtures/0-dns/create-cert.js and only one error of missing common module appeared.

$ ./node tools/eslint/bin/eslint.js --rulesdir=tools/eslint-rules test/fixtures/0-dns/create-cert.js --no-ignore
/home/sotsu/github/node/test/fixtures/0-dns/create-cert.js
1:1 error Mandatory module "common" must be loaded required-modules
✖ 1 problem (1 error, 0 warnings)

I think it is not necessary for the script in fixtures.

@sam-githubsam-github left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Its still a mixture of snake_case and camelCase for vars, but basically LGTM

Comment threadtest/fixtures/0-dns/0-dns-cert.pem Outdated
Z4CCF58oC4b7MrfFo1LXW8EdSjfK5ejFse6xZe6WNAahi7vDS7RJEyoq3EeZ4+A0
DvrSjCuretoVAC/U7gUxs467yM3ZCujqZ4OANVQF6knRziTJEF5c1aXOzM563FT3
ufeH36lO0ImzE+a2g6et3BZDL2PQLmBF3F6clQ==
-----END CERTIFICATE----- No newline at end of file

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

missing newline

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

@shigeki

shigeki commented Mar 2, 2017

Copy link
Copy Markdown
ContributorAuthor

camelCase vars are used to follow ASN.1 notation in RFC5289 RFC5280.

@shigeki

Copy link
Copy Markdown
ContributorAuthor

@indutny Please take a look of this if you have time for you are the author of asn.1 and asn1.js-rfc5280.

@shigeki

Copy link
Copy Markdown
ContributorAuthor

I will land this tomorrow if there are no any comments.

@shigeki

Copy link
Copy Markdown
ContributorAuthor

Landed in dacaaa5. Thanks.

@shigekishigeki closed this Mar 10, 2017
shigeki added a commit that referenced this pull request Mar 10, 2017
0-dns-cert.pem and 0-dns-key.pem were stored in `test/fixtures/key`
directory, but the cert file cannot be created with the openssl
command via Makefile.
Added a script to create it with using `asn1.js` and
`asn1.js-rfc5280` and moved them out of key directory and put into
`test/fixtures/0-dns`.
The domains listed in the cert were also changed into example.com and
example.org to show the use for only testing.
Fixes: #10228
PR-URL: #11579
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
italoacasas pushed a commit to italoacasas/node that referenced this pull request Mar 13, 2017
0-dns-cert.pem and 0-dns-key.pem were stored in `test/fixtures/key`
directory, but the cert file cannot be created with the openssl
command via Makefile.
Added a script to create it with using `asn1.js` and
`asn1.js-rfc5280` and moved them out of key directory and put into
`test/fixtures/0-dns`.
The domains listed in the cert were also changed into example.com and
example.org to show the use for only testing.
Fixes: nodejs#10228
PR-URL: nodejs#11579
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
@italoacasasitaloacasas mentioned this pull request Mar 13, 2017
jungx098 pushed a commit to jungx098/node that referenced this pull request Mar 21, 2017
0-dns-cert.pem and 0-dns-key.pem were stored in `test/fixtures/key`
directory, but the cert file cannot be created with the openssl
command via Makefile.
Added a script to create it with using `asn1.js` and
`asn1.js-rfc5280` and moved them out of key directory and put into
`test/fixtures/0-dns`.
The domains listed in the cert were also changed into example.com and
example.org to show the use for only testing.
Fixes: nodejs#10228
PR-URL: nodejs#11579
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
MylesBorins pushed a commit that referenced this pull request Apr 17, 2017
0-dns-cert.pem and 0-dns-key.pem were stored in `test/fixtures/key`
directory, but the cert file cannot be created with the openssl
command via Makefile.
Added a script to create it with using `asn1.js` and
`asn1.js-rfc5280` and moved them out of key directory and put into
`test/fixtures/0-dns`.
The domains listed in the cert were also changed into example.com and
example.org to show the use for only testing.
Fixes: #10228
PR-URL: #11579
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
MylesBorins pushed a commit that referenced this pull request Apr 19, 2017
0-dns-cert.pem and 0-dns-key.pem were stored in `test/fixtures/key`
directory, but the cert file cannot be created with the openssl
command via Makefile.
Added a script to create it with using `asn1.js` and
`asn1.js-rfc5280` and moved them out of key directory and put into
`test/fixtures/0-dns`.
The domains listed in the cert were also changed into example.com and
example.org to show the use for only testing.
Fixes: #10228
PR-URL: #11579
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
@MylesBorinsMylesBorins mentioned this pull request Apr 19, 2017
andrew749 pushed a commit to michielbaird/node that referenced this pull request Jul 19, 2017
0-dns-cert.pem and 0-dns-key.pem were stored in `test/fixtures/key`
directory, but the cert file cannot be created with the openssl
command via Makefile.
Added a script to create it with using `asn1.js` and
`asn1.js-rfc5280` and moved them out of key directory and put into
`test/fixtures/0-dns`.
The domains listed in the cert were also changed into example.com and
example.org to show the use for only testing.
Fixes: nodejs/node#10228
PR-URL: nodejs/node#11579
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

testIssues and PRs related to the tests.tlsIssues and PRs related to the tls subsystem.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@shigeki@sam-github@jasnell@indutny@MylesBorins@nodejs-github-bot