Can an SHA256 hash be used as an ECDSA private key? Is it possible to map a pass-phrase directly to a Bitcoin private key by using its SHA256 hash? I remember reading somewhere that not all 256 bit values are valid ECDSA private keys. If so, how can I make sure that the resulting hash is valid, or is there some other canonical way of mapping a pass-phrase to a private key?
While the question isn't an exact duplicate, the answer essentially is, so I'm going to quote this answer by Pieter Wuille:


  As is normal when doing Elliptic Curve encryption, a private key is
  simply a random number. In the case of secp256k1, the elliptic curve
  used by Bitcoin, it has to be a number between 1 and
  115792089210356248762697446949407573529996955224135760342422259061068512044368
  (or in hexadecimal, between 1 and
  FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551.
  
  This private key is converted to a public key by performing an EC
  point multiplication with the curve's base point. The result is an
  (x,y) coordinate pair, which constitutes the public key.
  
  Finally, RIPEMD160(SHA256(pubkey)), where pubkey is a serialization of
  those coordinates, is computed, and encoded in base58, together with a
  checksum. This becomes the address.


So the short answer is yes, as long as the resulting hash is less than or equal to FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551 any SHA256 hash is an acceptable privkey.

As for a canonical method of mapping a passphrase to a privkey, I don't believe there is one - after all, this functionality isn't built into the Satoshi client (at least not yet) so there cannot, by definition, be a canonical method. The closest thing I can think of would be the mini private key format used by Casascius physical bitcoins, which could easily be used with a passphrase instead. Indeed Casascius' Bitcoin Address Utility is often the app of choice for those wishing to make "mental wallets" from memorized passphrases rather than random inputs.